0
我有一个指令元素:添加指令属性,以指令元素
return {
restrict: 'E',
replace: true,
transclude: true,
template: '<ul>' +
'<li {{myNewAttrDirective}}>Home</li>' +
'<li {{myNewAttrDirective}}>Products</li>' +
'<li {{myNewAttrDirective}}>Cart</li>' +
'<li {{myNewAttrDirective}}>Contact Us</li>' +
'</ul>',
scope: {
_showMore : '=showMore'
},
link: function(scope, element, attrs) {
if (scope._showMore === true) {
scope.myNewAttrDirective = 'myAnimationDirective'
}
}
};
HTML:
<my-directive show-more="true"></my-directive>
所以基本上,如果show-more
等于true,则与属性指令我已经取代{{myNewAttrDirective}}
即my-attr-directive
。
我试图与上述if语句,但预计,在HTML中,我留下了很<li {{myNewAttrDirective}}>Home</li>
UPDATE:
在我的if语句,我可以通过添加属性:
var item = element.find("li");
item.attr("myAnimationDirective", "");
它在HTML中呈现,但点击事件不响应。 (但是,如果我将它们添加到我的原始指令中,它们会工作)。
一个更优雅的解决办法是做在指令绑定编译阶段:** **编译功能允许指令操作DOM是编译和链接之前,从而使它添加/删除/更改指令,以及添加/删除/更改其他DOM元素。让我知道你是否希望我用一些代码展示这个例子。 –
@CosminAbabei - 您的解决方案听起来更好,尤其是从性能的角度来看。展示会很有用。 –