我尝试注入两个名称相同但内容不同的模块
我正在使用两个角度库偶然具有相同的名称
angular.module("main", ['moduleSameName']).
controller('mainController','factoryA', 'sumService' [function(factoryA, sumService){
this.name = factoryA.name;
this.result = sumService.sum(1,2);
}]);
//lib.js
angular.module("moduleSameName", []).
factory('factoryA', function(){
return { name : "giancarlo"}
});
//lib2.js
angular.module("moduleSameName", []).
service('sumService', function(){
this.sum: function(a, b){
return a + b
}
});
存在任何解决方案吗?
答案 0 :(得分:0)
我从来没有对它进行测试,但就angular知道,两个库都将被认为是相同的模块,所以如果它们内部没有冲突的名称或多个配置/运行,你应该是能够将它注入您的应用程序,就像它只是一个模块一样。
如果这不起作用,只需选择一个并在源代码中更改其名称。
答案 1 :(得分:0)
如此StackOverflow答案中所述,两者中较晚的一个很可能会覆盖第一个。
AngularJS name collision in Dependency Injection?
这是因为大多数模块以angular.module("name", [])
开头,告诉angular创建一个带有所述名称的全新模块。这是角1.x的缺点之一,并已被处理和解决角2.x.大多数模块作者都应该意识到这一点,并使他们的模块名称更加独特,但是并非总是如你所知。
对于围绕名称冲突的可能解决方案,您可以按照此StackOverflow答案中的操作进行操作:
AngularJS - module dependencies, naming clash
请注意,这可能有点笨拙,但如果您别无选择,可以选择。