binding - Angular 指令隔离范围上的可选双向绑定(bind)

标签 binding angularjs-directive angularjs-scope transclusion

问题

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

scope: { parentScopeFunc: '&?' }

我正在尝试查看是否有一种方法可以对双向绑定(bind)执行类似的操作。

scope: { optional2WayBoundProp: '=?' }

我尝试使用链接函数的 element & attrs params 但随后我失去了回到父级的双向绑定(bind)。该方法仅允许父级到子级的更新。那我不妨只使用 @范围机制。

编辑

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

目标

这就是我想要实现的目标:

  • 编写一个面板指令,该指令可以嵌入内容并且可以在标题区域之外折叠:
    <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/

相关文章:

python - Python中的变量是如何分配内存的?

c# - WPF => 将 ContextMenu 与 CollectionViewSource 绑定(bind)

angularjs - 仅在定义 $scope.myVar 后渲染 AngularJS 指令

javascript - 更改 ng-view 内容后保留的内存未释放

javascript - 如何在 Controller 中获取父 Controller 作为 Angular 语法

javascript - AngularJS : Passing a function to an isolated scope of a directive to be called within its controller?

wpf - 标记扩展方法如何应用于 XAML 中的绑定(bind)值?

Silverlight DataGrid.Celltemplate 绑定(bind)到 ViewModel

javascript - 在模板中使用原始元素类型的 AngularJS 指令

javascript - 使用 Angular 将字符串中编码的 HTML 转换为输入字段的纯文本