一个简单的自定义指令使用来自ngRepeat的值,该指令位于具有ngRepeat的同一元素上。
请参阅plunker http://plnkr.co/edit/HHDT8q4srsr5ZRYJAhDR?p=preview
指令工作正常,{{item.locked}}具有在
答案 0 :(得分:1)
当你使用attrs.ciProductLocked
时,它只是抓取html中的字符串。您想要评估变量,以便您可以执行以下操作:
// in the directive
if(scope.$eval(attrs.ciProductLocked)){
el.addClass('ui-state-disabled');
}
// in the dom
ci-product-locked="item.locked"
这将在范围的上下文中计算字符串item.locked,并为您提供实际值。 以下是更新后的代码http://plnkr.co/edit/rEslCHqfdy8H82e0o4KJ?p=preview。
希望这有帮助!
答案 1 :(得分:0)
你的例子中有一些事情会使它有点混乱。
首先,如果您只想找到一种基于布尔值向项目添加CSS类的方法,那么您应该使用ng-class:
<li ng-class="{ ui-state-disabled: item.locked }" ...>
其次,如果你试图将范围变量的值传递给指令,那么使用新范围并绑定属性会更容易一些 - the angular directive guide在这里有全面的信息。
第三,将范围值绑定到属性时,您可能希望使用未解释的值:
<li ci-product-locked="item.locked" ...>
如果您已将ci-product-locked属性声明为传递给链接函数中的指令,则会动态绑定。