我遇到了冲突指令和属性名称的问题。这是我的问题的一个简化版本:有两个指令,其中第一个指令的名称是第二个指令的属性名称:指令名称和属性名称冲突
angular.module('mymodule').directive('property', function() {
return {
template: '<div>Property Directive</div>'
};
});
angular.module('mymodule').directive('fail', function() {
return {
scope: {
property: '='
},
template: '<div>{{property}}</div>'
}
});
当我尝试我的第二个指令添加到一个HTML文件:
<fail property="'test'"></fail>
我得到以下错误:
Error: [$compile:multidir] Multiple directives [fail, property] asking for template on: <fail property="'test'">http://errors.angularjs.org/1.3.0-rc.4/$compile/multidir?p0=fail&p1=property&p2=template&p3=%3Cfail%20property%3D%22'test'%22%3E
现在,这不会是一个问题,如果这两个指令是在我的模块,因为他们重新命名很容易。但是我在我的应用程序中使用了来自不同外部模块的指令/属性名称。
我该如何判断角度,property
这个属性在这个特殊情况下是不是指令?
也许你可以装饰这些指令2,改变他们的限制,以不同的呢?或者将他们的优先级改为不同,使得终端选项的指令失败优先级更高? – PSL 2014-10-17 01:50:59
http://plnkr.co/edit/5Cfn5T?p=preview根据这些指令的作用,您可以更改限制值。 – PSL 2014-10-17 01:59:48
感谢您的帮助和示例代码。我仍然试图解决这个问题,因为改变其他模块的指令会产生一些副作用。我对Angular很陌生,我觉得我缺少重要的一点。在我看来,像很多人应该遇到这种类型的指令和属性名称冲突的问题... 你知道重命名(或添加前缀)从其他模块的指令名称吗? – forrert 2014-10-21 17:54:09