【发布时间】:2017-01-28 22:28:33
【问题描述】:
给定
<my-component my-attr="parentModel">
和一个指令定义,包括:
scope: { localModel:'<myAttr' }
角度will set up a one time binding。这是什么意思
表达式在父作用域的上下文中计算
和
隔离范围属性 localModel 将在父范围上反映 parentModel 的值。对 parentModel 的任何更改都会反映在 localModel 中,但 localModel 的更改不会反映在 parentModel 中
这很好,但是在使用 & 符号(即&)的角度表达式已经可以完成的事情之上,如何完成任何事情?
给定
<my-component my-attr="parentModel">
和一个指令定义,包括:
scope: { getModel:'&myAttr' }
对scope.getModel() 的任何调用也应该在父作用域的上下文中评估"parentModel" 表达式,并将这样的值提供给指令的隔离作用域,这里不需要$watch parentModel或者担心隔离范围内的值会传播回父级。
【问题讨论】:
-
为什么不
@vs&或@vs<呢?&和<是橙子和苹果。&计算父上下文中的表达式。<提供范围属性的绑定。&非常适合在父上下文中调用函数(A2 事件发射器的替代品),scope.localModel()非常难闻。<首先是为了填补 1.5 到 2.0 迁移的空白。 -
@estus 你不会叫它
scope.localModel()。只是保留名字以供比较。更像是scope.someBehavior() -
@estus 我想我的问题是,当您可以使用函数完成相同的事情时,为什么要将道具绑定到从父级接收一个定向更新的作用域。它可能只是归结为一种风格/偏好吗?
-
你可以用
{{ parentModel }}@绑定来做到这一点,不是吗?这在某种程度上是一个品味问题,但使用 & 绑定会更尴尬。 -
如果绑定不正确,[] 和
()绑定。
标签: javascript angularjs