22

我已经按照我能找到的所有说明来修复缩小,例如

var MyController = function(renamed$scope, renamedGreeter) {
...
}
MyController.$inject = ['$scope', 'greeter'];

someModule.factory('greeter', ['$window', function(renamed$window) {
...;
}]);

然而角度仍然拒绝工作。它总是抛出错误“未知提供者:eProvider”

这是我让它工作的两次尝试......有人可以帮忙吗?

https://github.com/jemminger/angular-test1

https://github.com/jemminger/angular-test2

他们已经对资产进行了预编译,并且将开发模式配置为生产模式,因此您应该能够“rails s”来查看它(不)工作。

4

3 回答 3

60

找到了!他们从未说过将注入修复程序也应用于服务......解决方案是改变这一点:

angular.module('itemServices', ['ngResource']).
    factory('Item', function($resource){
      return $resource('items/:item_id.json', {}, {
        query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
      });
    });

对此:

angular.module('itemServices', ['ngResource']).
    factory('Item', ['$resource', function($resource){
      return $resource('items/:item_id.json', {}, {
        query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
      });
    }]);
于 2012-11-19T18:19:12.560 回答
14

请记住,还要在指令中的控制器上使用 DI。花了我几个小时...... CS示例:

错误的:

controller: ($scope) ->
  $scope.closeModal = ->
    ModalService.close()

对:

controller: ["$scope"
  ($scope) ->
    $scope.closeModal = ->
      ModalService.close()
]
于 2013-09-04T16:52:29.283 回答
6

确保将 DI 模式应用于需要在模块中注入的所有函数定义。很容易错过一个。如果您使用的是 routeProvider、工厂、服务等,它们都需要应用 DI 模式。我最终部署了多次,然后才全部抓到:P

于 2013-06-13T20:50:22.063 回答