指令使用的值来自同一元素标签中的ng重复

时间:2014-01-27 23:37:25

标签: angularjs angularjs-directive angularjs-ng-repeat

一个简单的自定义指令使用来自ngRepeat的值,该指令位于具有ngRepeat的同一元素上。

请参阅plunker http://plnkr.co/edit/HHDT8q4srsr5ZRYJAhDR?p=preview

指令工作正常,{{item.locked}}具有在

  • 标记之外显示时可以看到它们的值。但该指令似乎无法确定{{item.locked}}中的值是什么。

  • 2 个答案:

    答案 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属性声明为传递给链接函数中的指令,则会动态绑定。