问题
我刚刚了解到您可以通过以下方式进行可选的“反向”或回调绑定(bind):
scope: { parentScopeFunc: '&?' }
我正在尝试查看是否有一种方法可以对双向绑定(bind)执行类似的操作。
scope: { optional2WayBoundProp: '=?' }
我尝试使用链接函数的 element
& attrs
params 但随后我失去了回到父级的双向绑定(bind)。该方法仅允许父级到子级的更新。那我不妨只使用 @
范围机制。
编辑
我发现了这个问题Angular JS directive, change a 2 way data binding in the link function这样就回答了有关 =?
的主要问题。但是,它不能解决“可选”非绑定(bind)值,例如 true
或false
.
目标
这就是我想要实现的目标:
编写一个面板指令,该指令可以嵌入内容并且可以在标题区域之外折叠:
<my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>
在某些情况下,我想在父范围中缓存面板实例的折叠状态(因此 View Controller 可以确定如何缓存此信息的双向绑定(bind)):
<my-panel is-expanded="parentScopeProp">
- 在其他情况下,我可能只想声明它而不绑定(bind)到父范围属性,或者我可能根本不声明它,在这种情况下它假设它已扩展。
<my-panel is-expanded="true/false">
据我所知,通过使用=
赋值,表达式如 undefined
, true
& false
无法评价。
最佳答案
'=?'
是自 ng 1.2.x 起有效的作用域分配...
...至于能够从可选的双向绑定(bind)中插入表达式的能力,这仍然是有待实现的。
关于binding - Angular 指令隔离范围上的可选双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26804420/