我刚刚了解到你可以通过以下方式获得可选的“反向”或回调绑定:
scope: { parentScopeFunc: '&?' }
我试图看看是否有办法用双向绑定做类似的事情。
scope: { optional2WayBoundProp: '=?' }
我尝试使用链接功能element
& attrs
参数,但后来我失去了回到父母的双向约束。该方法仅允许父对子更新。然后我不妨使用@
范围机制。
我发现了这个问题Angular JS directive, change a 2 way data binding in the link function,以便回答有关=?
的主要问题。但是,它无法解决true
或false
等“可选”非约束值。
这就是我想要完成的事情:
编写一个转换内容的面板指令,除标题区域外可以折叠:
<my-panel>
<transcluded-header-content/>
<button ng-click="toggleCollapse()"/>
<transcluded-body-content ng-if="isExpanded"/>
</my-panel>
在某些情况下,我想在父作用域中缓存面板实例的折叠状态(因此视图的控制器可以确定如何缓存此信息的双向绑定):
<my-panel is-expanded="parentScopeProp">
<my-panel is-expanded="true/false">
我了解到,通过使用=
作业,undefined
,true
和&amp;无法评估false
。
答案 0 :(得分:36)
'=?'
是从ng 1.2.x开始的有效范围分配...
...至于是否有能够从可选的双向绑定中插入表达式的能力,这仍然可以用于获取。