关于隔离范围属性的AngularJS文档

时间:2014-01-23 10:46:37

标签: angularjs angularjs-directive angularjs-scope

是否有任何AngularJS文档提供了一个直接明确的方法列表,用于处理具有隔离范围的指令中的属性?

directive guide触及=的使用,但没有列出用于绑定的其他选项。

到目前为止,我知道(通过混合来源):

scope: {
   myAttr1: '=attr1',
   myAttr2: '=?attr2',
   myAttr3: '@attr3',
   myAttr4: '&attr4'
},

2 个答案:

答案 0 :(得分:8)

查看编译服务:http://docs.angularjs.org/api/ng.$compile

  

'隔离' scope采用对象哈希,该哈希定义从父范围派生的一组局部范围属性。这些本地属性对于模板的别名值很有用。 Locals定义是本地范围属性的哈希值:

     

@或@attr - 将本地范围属性绑定到DOM属性的值。结果总是一个字符串,因为DOM属性是字符串。如果未指定attr名称,则假定属性名称与本地名称相同。范围的给定和小部件定义:{localName:' @ myAttr'然后,窗口小部件范围属性localName将反映hello {{name}}的内插值。随着name属性的更改,widget命名空间上的localName属性也会更改。从父作用域(而不是组件作用域)读取名称。

     

= or = attr - 在本地范围属性和通过attr属性的值定义的name的父范围属性之间设置双向绑定。如果未指定attr名称,则假定属性名称与本地名称相同。范围的给定和小部件定义:{localModel:' = myAttr'然后,窗口小部件范围属性localModel将反映父范围上的parentModel的值。对parentModel的任何更改都将反映在localModel中,localModel中的任何更改都将反映在parentModel中。如果父作用域属性不存在,则会抛出NON_ASSIGNABLE_MODEL_EXPRESSION异常。你可以使用=?避免这种行为?或=?attr以便将属性标记为可选。

     

&安培;或& attr - 提供在父作用域的上下文中执行表达式的方法。如果未指定attr名称,则假定属性名称与本地名称相同。范围的给定和小部件定义:{localFn:'& myAttr'然后隔离范围属性localFn将指向count = count + value表达式的函数包装器。通常希望通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn来完成。例如,如果表达式是increment(amount),那么我们可以通过将localFn称为localFn({amount:22})来指定金额值。

答案 1 :(得分:1)

您还可以查看指令的旧文档。我相信新的更好理解,但旧的更容易理解。

http://code.angularjs.org/1.1.5/docs/guide/directive

相关问题