注入两个或多个具有相同名称但内容不同的模块 - angularJs

时间:2016-10-14 18:07:59

标签: javascript angularjs

我尝试注入两个名称相同但内容不同的模块

我正在使用两个角度库偶然具有相同的名称

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
	}	
});

存在任何解决方案吗?

2 个答案:

答案 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

请注意,这可能有点笨拙,但如果您别无选择,可以选择。