问题
我刚刚了解到您可以通过以下方式进行可选的“反向”或回调绑定:
scope: { parentScopeFunc: '&?' }
我想看看是否有办法用 2-way binding 做类似的事情。
scope: { optional2WayBoundProp: '=?' }
我尝试使用链接函数的element
&attrs
参数,但后来我失去了 2-way-binding 回到父级。该方法只允许父子更新。那我还不如只使用@
作用域机制。
编辑
我发现这个问题Angular JS directive, change a 2 way data binding in the link 函数,以便回答有关=?
. 但是,它不能解决“可选”非绑定值,例如true
or false
。
目标
这是我要完成的工作:
编写一个面板指令,该指令包含内容并且可以在标题区域之外折叠:
<my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>
在某些情况下,我想在父范围内缓存面板实例的折叠状态(因此视图控制器可以确定如何缓存此信息的 2 路绑定):
<my-panel is-expanded="parentScopeProp">
- 在其他情况下,我可能只想声明它而不绑定到父范围属性,或者我可能根本不声明它,在这种情况下它假定它已扩展。
<my-panel is-expanded="true/false">
我知道通过使用赋值,无法评估=
像undefined
, true
&这样的表达式。false