如何在AngularJS中区分注入模块的命名空间?

5
假设我有一个控制器,它依赖于两个模块,这两个模块都包含一个具有相同名称的指令或服务。我能指定使用哪个吗?
angular.module('myApp', ['secondModule', 'thirdModule'])
    .controller('Ctrl1', ['$scope', 'myService', function(scope, myService){
        scope.user = myService.getUser();   
        console.log(myService); 
}]);

在这种情况下,secondModulethirdModule都有一个名为myService的服务。但是,在此示例中,只使用来自thirdModule的服务。我尝试将 secondModule.myService 作为 Ctrl1 的依赖项,但它不起作用。在AngularJS中是否有某种命名空间?

你真的应该避免这个!!目前似乎不可能。 - Arshabh Agarwal
2
在开发可能包含许多指令/服务/常量等的大型应用程序时,这似乎是一个真正的问题。在我看来,使用简单的命名约定并不足够强大。 - Brett Postin
3个回答

2

目前还没有基于模块的命名空间。您需要自己避免冲突。

我相信曾经有过这方面的讨论,但我现在找不到了。


0

服务(以及控制器)的命名空间怎么样?

angular.module('secondModule', [])
    .factory('secondModule.myService', function($http) {
        return {
            getUser: function() { /* some code here */ }
        };
    });

angular.module('thirdModule', [])
    .factory('thirdModule.myService', function($http) {
        return {
            getGroup: function() { /* some code here */ }
        };
    });

angular.module('myApp', ['secondModule', 'thirdModule'])
    .controller('myApp.Ctrl1',
        ['$scope', 'secondModule.myService', function(scope, myService){
            scope.user = myService.getUser();   
            console.log(myService); 
        }]
    );


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接