我们假设我们有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正在改变,所以我们需要更新内部指令。
答案 0 :(得分:0)
嗯,在第一种情况下,temp
可以是由OuterDirective
范围提供的任意变量。 =
表示更新InnerDirective
范围内的该值也会在OuterDirective
的范围内更新。
第二种情况是可能的,您可以将您想要的所有内容单向传递给标有&
的属性。
在内部和外部范围内使用temp
有点令人困惑,所以我将改为使用outer
和inner
。
我们假设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。