错误:$ 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

那么你会告诉我什么是错的?

+0

你可以检查你是否有index.html中的service.js路径?该错误通常表明您没有在脚本标记 –

+0

@OlegMarkoff中放置文件路径,我在'_Layout.cshtml'中有路径。所以它应该在那里。 – Bigeyes

移动从服务建设功能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 = '#/'; 
      }) 
    } 
}); 

error message link

Unknown provider: idProvider <- id <- EmployeeService 

喷油器错误地试图注入名为id的服务。

+0

但是在我的controller.js中,我必须传入id'EmployeeService.deleteEmployee(index)'。如果你在函数中移动id,那么'id'总是为0. – Bigeyes

+0

@Bigeyes你的意思是“'id'总是为0”?你可以像'ng-click =“delFn($ index,emp.EmployeeId)”'那样传递id,并且在controller.js中该方法应该像'$ scope.delFn = function(index,id){...}所以你可以在里面调用'EmployeeService.deleteEmployee(id);'。 –

+0

@StanislavKvitash,请查看[here](https://flic.kr/p/UihNy4)上的调试信息。 – Bigeyes

app.controller("EmpCtrl", ['$scope', 'EmployeeService', function ($scope, EmployeeService) { 
//do stuff here 
}]); 

根据角度文档,您的服务注入不正确。尝试控制器改变上述,看看错误消失

+0

不幸的是,还是错的。 – Bigeyes

+0

我检查了每一行,错误表明EmployeeService拼写错误,但我找不到拼写错误。 –