【问题标题】:Optional two-way binding on isolate scope for Angular DirectiveAngular 指令的隔离范围上的可选双向绑定
【发布时间】:2015-01-04 10:22:30
【问题描述】:

问题

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

scope: { parentScopeFunc: '&?' }

我正在尝试查看是否有一种方法可以使用 2 向绑定执行类似的操作。

scope: { optional2WayBoundProp: '=?' }

我尝试使用链接函数的 elementattrs 参数,但后来我失去了与父级的双向绑定。该方法只允许父子更新。那我还不如直接使用@作用域机制。

编辑

我发现了这个问题Angular JS directive, change a 2 way data binding in the link function,因此回答了关于=? 的主要问题。但是它不能解决“可选”非绑定值,例如 truefalse

目标

这是我想要完成的:

  • 编写一个面板指令,该指令可以嵌入内容并且可以在标题区域之外折叠:
    <my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>

  • 在某些情况下,我想在父范围内缓存面板实例的折叠状态(因此视图控制器可以确定如何缓存此信息的 2 路绑定):

    &lt;my-panel is-expanded="parentScopeProp"&gt;

  • 在其他情况下,我可能只想声明它而不绑定到父范围属性,或者我可能根本不声明它,在这种情况下它假定它已扩展。

    &lt;my-panel is-expanded="true/false"&gt;

我了解,通过使用 = 赋值,无法评估像 undefinedtruefalse 这样的表达式。

【问题讨论】:

    标签: binding angularjs-directive angularjs-scope transclusion


    【解决方案1】:

    '=?' 是从 ng 1.2.x 开始的有效范围分配...

    ...关于从可选的双向绑定中插入表达式的方法的能力,这仍然是可供选择的。

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2017-09-05
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2014-07-11
      相关资源
      最近更新 更多