22

问题

我刚刚了解到您可以通过以下方式进行可选的“反向”或回调绑定:

scope: { parentScopeFunc: '&?' }

我想看看是否有办法用 2-way binding 做类似的事情。

scope: { optional2WayBoundProp: '=?' }

我尝试使用链接函数的element&attrs参数,但后来我失去了 2-way-binding 回到父级。该方法只允许父子更新。那我还不如只使用@作用域机制。

编辑

我发现这个问题Angular JS directive, change a 2 way data binding in the link 函数,以便回答有关=?. 但是,它不能解决“可选”非绑定值,例如trueor 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

4

1 回答 1

36

'=?' is a valid scope assignment as of ng 1.2.x...

...as for the ability to have a means of interpolating an expression from an optional two-way-binding, that is still up for grabs.

于 2014-11-11T18:15:20.940 回答