如何从不同的模块引用具有相同名称的值

Fre*_*ind 12 angularjs

如果我有一些定义相同value对象的模块:

var m1 = angular.module('m1', []);
m1.value('test', 'AAA');

var m2 = angular.module('m2', []);
m2.value('test', 'BBB');
Run Code Online (Sandbox Code Playgroud)

注意m1,m2两者都具有相同的值test.

然后在主模块中,我依赖于它们两个:

var app = angular.module('angularjs-starter', ['m1','m2']);

app.controller('MainCtrl', function($scope, test) {
  $scope.test = test;
});
Run Code Online (Sandbox Code Playgroud)

HTML非常简单:

<body ng-controller="MainCtrl">
 [{{test}}]
</body>
Run Code Online (Sandbox Code Playgroud)

它将显示[BBB]在最后一页.我可以看到该值testm1已经的一个推翻m2.

你可以在这里看一个现场演示:http://plnkr.co/edit/u7u8p0nYqq9CvNxWKv5G?p = preview

有没有什么办法来显示的值test都来自m1m2在同一页面中?

pko*_*rce 12

总之 - 没有.AngularJS模块形成一个名称空间.如果在2个不同的模块上定义2个具有相同名称的值,则在运行期间只能看到一个值.这适用于任何提供者,而不仅仅是值.

这可能会在AngularJS的未来版本中得到解决,但现在最好的选择是为您的值(和其他提供者)添加模块名称前缀.

  • 我不喜欢前缀:( (5认同)