angularjs为不同文件中的同一模块定义服务

时间:2014-04-30 01:32:11

标签: javascript angularjs service dependency-injection factory

我有两个文件,我在我的角度应用程序中定义服务,但当我尝试在我的指令中使用它们时,我得到一个错误,说明找不到我定义的第二个指令的服务提供者。似乎有一项服务正在覆盖另一项服务。如果我将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
}]);

2 个答案:

答案 0 :(得分:45)

这是来自文档:

  

注意使用angular.module('myModule',[])将创建模块myModule并覆盖任何名为myModule的现有模块。使用angular.module('myModule')检索现有模块。

在这里找到: https://docs.angularjs.org/guide/module

答案 1 :(得分:0)

这是可能的,但是容易出错,因此不推荐

对您正在做的事情进行小修改

只是不要在service1.js以外的其他文件中重新声明模块变量,或者将模块定义放到自己的文件中,并按照Module.js,services.js,directive的顺序包含这些JS文件。然后它会工作