【问题标题】:Inject two or more Modules with identical Names but content different - angularJs注入两个或多个名称相同但内容不同的模块 - angularJs
【发布时间】:2017-02-24 06:16:05
【问题描述】:

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

我偶然使用了两个同名的角度库

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

有任何解决方案吗?

【问题讨论】:

  • 不,你不能在一个注入器中使用同名的模块

标签: javascript angularjs


【解决方案1】:

我从未测试过,但据 Angular 所知,这两个库将被视为同一个模块,所以如果它们内部没有冲突的名称或多个配置/运行,你应该是能够将其注入您的应用程序,就好像它只是一个模块一样。

如果这不起作用,只需选择一个并在源代码上更改其名称。

【讨论】:

    【解决方案2】:

    正如 StackOverflow 答案中所述,两者中的后者很可能会覆盖第一个。

    AngularJS name collision in Dependency Injection?

    这是因为大多数模块都以angular.module("name", []) 开头,它告诉 Angular 创建一个具有上述名称的全新模块。这是 angular 1.x 的缺点之一,并且已经针对 angular 2.x 进行了处理和解决。大多数模块作者都应该意识到这一点,并让他们的模块名称更加独特,但您发现情况并非总是如此。


    对于名称冲突的可能解决方案,您可以按照此 StackOverflow 答案中所做的操作:

    AngularJS - module dependencies, naming clash

    请注意,这可能有点 hacky,但如果您别无选择,这是一个选项。

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多