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

Phi*_*ley 6 angularjs angularjs-directive angularjs-scope

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

指令引导触及使用=,但不会列出用于绑定的其他选项.

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

scope: {
   myAttr1: '=attr1',
   myAttr2: '=?attr2',
   myAttr3: '@attr3',
   myAttr4: '&attr4'
},
Run Code Online (Sandbox Code Playgroud)

mic*_*ael 8

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

'isolate'作用域采用一个对象哈希,它定义了一组从父作用域派生的局部作用域属性.这些本地属性对于模板的别名值很有用.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以便将属性标记为可选.

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