隔离范围变量和angularjs指令的attr之间的区别?

时间:2014-05-01 21:45:11

标签: angularjs

假设:

 scope:{
      suit: '@',
      value: '@'
    },

我可以使用{{suit}}或{{value}}在我的指令模板中访问这些值 我也可以使用attr.suit或attr.value在我的链接函数中访问它们。

当我在模板中声明class = "{{suit}} {{value}}"并同时执行elem.addClass(attr.suit)elem.addClass(attr.value)时会发生什么?

似乎{{}}值优先,并覆盖了我在链接函数中所做的操作。谁能解释为什么会这样?另外,更好的做法是什么?

1 个答案:

答案 0 :(得分:1)

至少有一个考虑因素是,如果您希望这些值在同一个指令中发生变化。可以适应' value可以是x,后来改为y?

  1. 如果您希望'诉讼'或者'值'改变,考虑到你没有操纵它们,我会在模板中使用它们。
  2. ng-class="{{suit}} {{value}}"

    (ng-class更好地支持插值)

    1. 如果你不期待'适合'或者'值'要更改,您可以将它们作为独立的范围变量删除,因为它定义了您不需要的绑定,并使用已经编写的elem.addClass(yourAttribute)。