是否有任何AngularJS文档提供了一个直接明确的方法列表,用于处理具有隔离范围的指令中的属性?
directive guide触及=
的使用,但没有列出用于绑定的其他选项。
到目前为止,我知道(通过混合来源):
scope: {
myAttr1: '=attr1',
myAttr2: '=?attr2',
myAttr3: '@attr3',
myAttr4: '&attr4'
},
答案 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)
您还可以查看指令的旧文档。我相信新的更好理解,但旧的更容易理解。