2014-10-06 55 views
0

为什么我的模块不适用于$ injector服务?控制台正在为我的baseHellogeoHello服务报告“未知提供商”。显然我错过了一些基本的东西,但是对于我的生活,我看不到它!不明白为什么我的Angular Dependencies不能解决?

http://plnkr.co/edit/3Y0WeIH1dCkWKMhRJKnM?p=preview

/**Modules, we flesh these out below**/ 
angular.module('demo.services',[]); 
angular.module('demo.directives',['demo.services']); 
angular.module('demo',['demo.services','demo.directives']); 

/**Application Module, Dependency on geoHello Service**/ 
angular.module('demo') 
.controller('myCtrl',['$scope', 'geoHello',function($scope,geoHello){ 
    $scope.test = geoHello.msg 
}]); 

/**Base Hello Service**/ 
angular.module("demo.services") 
.factory("baseHello",function(r){ 
    return{ 
    'msg': 'Hello from ...' 
    } 
}); 

/**Service With Dependency on baseHello**/ 
angular.module("demo.services") 
.factory("geoHello",['baseHello',function(baseHello){ 
    var msg = baseHello.msg.replace("...","world"); 
    return{ 
    'msg': msg 
    } 
}]); 

/**Directive With Dependency on geoHello**/ 
angular.module("demo.directives") 
.directive('ngDemo',['geoHello',function(geoHello){ 
    return{ 
    'template': geoHello.msg 
    } 
}]); 

angular.bootstrap(document,['demo']); 
+1

通常,当您使用非最小化版本的angularjs进行调试时,它会有所帮助。您可能会很快发现下面建议的对'r'的依赖关系。 – 2014-10-06 16:45:23

+0

回想起我的控制台原来的错误表明了'r'的依赖关系,我的眼睛一直关注错误信息中指定链中的其他两个依赖项。整个时间都在我面前! – mccainz 2014-10-06 16:54:04

回答

2

。在你的工厂定义baseHello

/**Base Hello Service**/ 
angular.module("demo.services") 
.factory("baseHello",function(r){ 
    return{ 
    'msg': 'Hello from ...' 
    } 
}); 
1

未解决的依赖性(R)我想你必须在你的代码一个错字。您有baseHello服务的依赖项,称为r,这是无法解决的。这不是必要的,因为你似乎没有使用它,所以如果你把它拿出来,那么你的代码将在你的Plunker中运行。

前:

angular.module("demo.services") 
.factory("baseHello",function(r){ 
    return{ 
    'msg': 'Hello from ...' 
    } 
}); 

后:

angular.module("demo.services") 
.factory("baseHello",function(){ 
    return{ 
    'msg': 'Hello from ...' 
    } 
}); 

的工作Plunker见here