角度双向绑定与方法绑定

时间:2015-06-04 13:02:18

标签: angularjs

我们假设我们有OuterDirective和InnerDirective。 InnerDirective显示的是由OuterDirective提供的temp,如:

<outer-directive>
  <inner-directive temp="temp" />
</outer-directive>

1)在内部指令中我们可以设置双向绑定:temp:&#39; =&#39;在内部指令tpl中使用{{temp}}

2)我们可以使用方法绑定&#34;&amp;&#34;喜欢temp:&#39;&amp;&#39;并在内部指令tpl {{temp()}}

temp正在改变,所以我们需要更新内部指令。

  • 第二种方法是否合适?
  • 哪一个在资源方面会更好?

1 个答案:

答案 0 :(得分:0)

嗯,在第一种情况下,temp可以是由OuterDirective范围提供的任意变量。 =表示更新InnerDirective范围内的该值也会在OuterDirective的范围内更新。

第二种情况是可能的,您可以将您想要的所有内容单向传递给标有&的属性。

在内部和外部范围内使用temp有点令人困惑,所以我将改为使用outerinner

我们假设outer()是您在外部范围内定义的函数,返回您希望在指令中显示的任意结果,inner是您的内部指令属性。 < / p>

<outer-directive>
   <inner-directive inner="{{outer()}}" />
</outer-directive>

如果您想要单向绑定,这将像魅力一样工作。令人困惑的部分是&属性需要{{}}才能绑定到值,而=属性则不需要。{/ p>

现在你可以使用

<div>{{inner}}</div>

直接

您也可以传递outer函数,以便在内部指令中调用,但这有点棘手。

如果您想了解更多相关信息,我建议您阅读Angular's documentation about directives中的“创建包含其他元素的指令”,这里有一个很好的示例,说明它在本节末尾可以做些什么(你想看看最后一个例子)。

以下是摘录摘录:

  

我们之前看到如何在范围选项中使用= attr,但在上面的示例中,我们使用的是&amp; attr。 &amp; binding允许指令在特定时间触发原始作用域上下文中表达式的求值。允许任何合法表达式,包括包含函数调用的表达式。因此,&amp;绑定非常适合将回调函数绑定到指令行为。

     

最佳实践:当您希望指令公开API以绑定行为时,请在范围选项中使用&amp; attr。