2013-07-23 554 views
0

我的应用程序依赖于两个过滤器的应用,如Angularjs过滤压倒一切和模块依赖注入

var app = angular.module('MyApp',['Filter1','Filter2']); 

其中两个应用程序有过滤器具有相同名称的

var filterapp1 = angular.module('Filter1',[]); 
filterapp1.filter('replace',function(){return function(input){ 
      return input + " from Filter1 app"; 
}}); 

var filterapp2 = angular.module('Filter2',[]); 
filterapp2.filter('replace',function(){return function(input){ 
      return input + " from Filter2 app"; 
}}); 

现在,在我的应用程序,如果我想从filterapplication1中引用过滤器,我该怎么办?

在我的HTML我有一些像

{{'Hello World' | replace }} 

其中输出应该是“从过滤器1的应用程序Hello World”的,但我得到的“Hello World从过滤器2应用程序”。如何覆盖过滤器?或做的过滤器按顺序覆盖他们被注入?如何克服这一点?

+0

JsFiddle已添加。 http://jsfiddle.net/yesoreyeram/qDFsB/ –

回答

3

In Angular“last one wins”。所以如果你想使用这两个过滤器,你应该用不同的名称。例如,过滤器('module1.replace',....)

+0

感谢valentyn。但是如何用多个模块实现大型应用程序。 –

+1

在我的练习中,我们开始命名的时候牢记AngularJS有'最后胜利'原则,所以我们只是在模块前缀模块名称中命名了所有内容。 –

+0

我希望这些问题能在Angular2版本中解决。 –