AngularJS module.directive没有一致地响应

时间:2013-10-04 03:14:19

标签: javascript angularjs

我有3个指令,它们具有稍微不同的算法来解析输入值。

angular.module('numeric', []).directive('doublesrange', function() {...} );   
angular.module('numeric', []).directive('integersrange', function() {...} );  
angular.module('numeric', []).directive('doublesnorange', function() {...} );  

它们基本上从文本框中解析值。

<td><input ng-model="odSphere" class="doublesnorange" minvalue="-25" maxvalue="25"></td>  

问题是,只有'doublesnorange'正在响应。我在开发过程中看到了所有三个工作,但是当我添加第三个工作时,另外两个工作停止了。当我解除这些变化时,他们也没有回应。

指令内容正常,如果我将'doublesnorange'置于'doublesnorange'之下,它将会执行。有人知道为什么前两个会没有回应吗?

1 个答案:

答案 0 :(得分:8)

问题在于,每次调用 angular.module('numeric',[])时,都会重新声明数字模块。您只需要声明一次,稍后再参考。

要引用模块,不应使用第二个参数: angular.module('numeric')。所以正确的代码是:

angular.module('numeric', []).directive('doublesrange', function() {...} );   
angular.module('numeric').directive('integersrange', function() {...} );  
angular.module('numeric').directive('doublesnorange', function() {...} );  

您可以更进一步,使用链接为单个模块声明多个指令:

angular.module('numeric', [])
    .directive('doublesrange', function() {...} )
    .directive('integersrange', function() {...} )
    .directive('doublesnorange', function() {...} );