我有两个文件,我在我的角度应用程序中定义服务,但当我尝试在我的指令中使用它们时,我得到一个错误,说明找不到我定义的第二个指令的服务提供者。似乎有一项服务正在覆盖另一项服务。如果我将service2.js中的模块定义更改为myapp.services2,那么它可以正常工作。我想我可以通过这种方式将多个工厂添加到同一模块中。有人可以指出我做错了什么吗?
service1.js:
var services = angular.module('myapp.services',[]);
services.factory('Service1', function() {
// service code
});
service2.js:
var services = angular.module('myapp.services',[]);
services.factory('Service2', function() {
// service code
});
mydirective.js:
angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2',
function(service1,service2) {
// directive code
}]);
答案 0 :(得分:45)
这是来自文档:
注意使用angular.module('myModule',[])将创建模块myModule并覆盖任何名为myModule的现有模块。使用angular.module('myModule')检索现有模块。
答案 1 :(得分:0)
这是可能的,但是容易出错,因此不推荐
对您正在做的事情进行小修改
只是不要在service1.js以外的其他文件中重新声明模块变量,或者将模块定义放到自己的文件中,并按照Module.js,services.js,directive的顺序包含这些JS文件。然后它会工作