我有 2 个属性指令(两者的限制都设置为“A”),dir1
并且dir2
在两个不同的模块中定义。在一个应用程序(包括这两个模块)中,我们有一个元素可以添加这两个指令之一。我们目前进行了设置,因此这dir1
是该元素的默认设置,但我们想要一种dir2
“覆盖”该指令的方法。
我们想要使用的元素是另一个指令模板的一部分parentDir
,所以我的第一个想法是为函数添加一些compile
功能parentDir
。for 的模板parentDir
将包含在其中<div class="myElement" dir1="{{data}}"></div>
,然后 compile 函数将如下所示:
function(tElement, tAttrs) {
if ("true" == tAttrs.useDir2)
{
var myElement = tElement.find("div.myElement");
myElement.removeAttr("dir1");
myElement.attr("dir2", "{{data}}");
}
return function (scope, element, attrs) {
// link stuff
}
}
whereuseDir2
将是parentDir
指令的一个属性。这可以正常工作,但是 for 的值useDir2
是一个插值,所以我不会用 . 查看我想要的值tAttrs.useDir2
。
我考虑过在 2 个指令上设置优先级,但是每个指令都必须知道另一个指令的优先级,以确保它们正确地相互关联。您不希望有人进入一个模块并更改其他内容的优先级,并破坏此功能。由于这两个指令位于不同的模块中,我希望它们彼此完全不知道。
我希望我已经足够清楚地解释了我的问题。我只是不确定如何去做,并且认为我可能错过了一些简单的方法来做到这一点。谢谢。