错误:$ injector:unpr未知的提供程序尝试删除记录时
我将通过使用angular js 1.3.13删除我的asp.net mvc项目中的记录。
<tr ng-repeat="emp in employees track by $index">
<td>
<a href="#" class="btn btn-default btn-sm">
<i class="glyphicon glyphicon-edit"></i>
</a>
</td>
<td>
{{emp.EmployeeId}}
</td>
<td>
{{emp.EmployeeName}}
</td>
<td>
{{emp.Address}}
</td>
<td>
{{emp.EmailId}}
</td>
<td>
<a href="#"
ng-click="delFn($index)"
class="btn btn-default btn-sm">
<i class="glyphicon glyphicon-trash"></i>
</a>
</td>
</tr>
我controller.js代码
app.controller("EmpCtrl", function ($scope, EmployeeService) {
GetAllEmployee();
function GetAllEmployee() {
var getAllEmployee = EmployeeService.getEmployee();
getAllEmployee.then(function (emp) {
$scope.employees = emp.data;
}, function() {
alert('Data not found');
});
}
$scope.delFn = function (index) {
var response = confirm('Delete this Employee?');
if (response) {
$scope.employees.splice(index, 1);
EmployeeService.deleteEmployee(index);
}
}
});
在我service.js,我有
app.service("EmployeeService", function ($http,id) {
this.getEmployee = function() {
return $http.get("/Employee/GetAllEmployee");
};
this.deleteEmployee = function() {
var url = "/Employee/DeleteEmployee/" + id;
$http.delete(url)
.success(function (result) {
alert("Delete Successfully");
})
.error(function() {
alert("Something wrong!");
})
.then(function() {
window.location = '#/';
})
}
});
在我的asp.net控制器,我已经删除方法
[HttpDelete]
public void DeleteEmployee(int id)
{
// blah
}
但调试时出现错误它在铬。
angular.min.js:102 Error: [$injector:unpr] http://errors.angularjs.org/1.3.13/$injector/unpr?p0=idProvider%20%3C-%20id%20%3C-%20EmployeeService
那么你会告诉我什么是错的?
移动从服务建设功能id
参数的deleteEmployee
功能:
//REMOVE `id` argument
//app.service("EmployeeService", function ($http,id) {
app.service("EmployeeService", function ($http) {
this.getEmployee = function() {
return $http.get("/Employee/GetAllEmployee");
};
//ADD `id` here
//this.deleteEmployee = function() {
this.deleteEmployee = function (id) {
var url = "/Employee/DeleteEmployee" + id;
return $http.delete(url)
.then(function (response) {
alert("Delete Successfully");
return response;
})
.catch(function (errorResponse) {
alert("Something wrong!");
throw errorResponse;
})
.then(function() {
window.location = '#/';
})
}
});
Unknown provider: idProvider <- id <- EmployeeService
喷油器错误地试图注入名为id
的服务。
但是在我的controller.js中,我必须传入id'EmployeeService.deleteEmployee(index)'。如果你在函数中移动id,那么'id'总是为0. – Bigeyes
@Bigeyes你的意思是“'id'总是为0”?你可以像'ng-click =“delFn($ index,emp.EmployeeId)”'那样传递id,并且在controller.js中该方法应该像'$ scope.delFn = function(index,id){...}所以你可以在里面调用'EmployeeService.deleteEmployee(id);'。 –
@StanislavKvitash,请查看[here](https://flic.kr/p/UihNy4)上的调试信息。 – Bigeyes
app.controller("EmpCtrl", ['$scope', 'EmployeeService', function ($scope, EmployeeService) {
//do stuff here
}]);
根据角度文档,您的服务注入不正确。尝试控制器改变上述,看看错误消失
不幸的是,还是错的。 – Bigeyes
我检查了每一行,错误表明EmployeeService拼写错误,但我找不到拼写错误。 –
你可以检查你是否有index.html中的service.js路径?该错误通常表明您没有在脚本标记 –
@OlegMarkoff中放置文件路径,我在'_Layout.cshtml'中有路径。所以它应该在那里。 – Bigeyes