通过 AngularJS 中的弹出框传递模型值

Passing a model value through a popover in AngularJS

本文关键字:模型 AngularJS 通过      更新时间:2023-09-26

>我想使用Bootstrap弹出窗口(来自Angular-Bootstrap(来修改控制器$scope上的模型值。 弹出框模板似乎正在断开某些连接。

做了一个小例子来展示我的问题:

指令1(master-directive(将模型作为隔离范围属性。 它的模板是一个显示弹出窗口的按钮。 弹出框的模板显示指令 2 ( sub-directive (,该指令通过隔离范围属性馈送模型值,并将包含某种 UI 控件来修改该属性(在演示中,这只是单击鼠标(。

通常,更改会传播回控制器(sub-directive模型是双向绑定到master-directive模型,然后双向绑定到控制器模型。 但是,当在弹出框中使用包含sub-directive的模板时,sub-directivemaster-directive之间的双向绑定将被破坏。 sub-directive 中对模型所做的任何更改都将保留在该指令的本地,并且不会向上传播。

相关文章:http://plnkr.co/edit/3ZnmNUtajXsAHJjCdkkJ?p=preview

这是没有弹出窗口的同一个 Plunkr,证明它可以工作:http://plnkr.co/edit/Mr4djvZCVpEUkgDZpyvV?p=preview

我是否缺少一个步骤来弥合弹出模块引入的差距?

如果你把数据存储在一个对象中,而不是一个Javascript原语(数字(,问题就解决了。普伦克尔。

将数据存储在如下所示的对象中:

$scope.data = { num: 5 };

取而代之的是:

$scope.num = 5;

我的假设是弹出框正在创建一个子范围。原型继承工作方式的 B/c,子作用域中的 number 属性隐藏父作用域中的 number 属性(例如,父项的值在子项的值更改时不会更改(。