javascript - 无法在数组上进行双向数据绑定(bind)

标签 javascript angularjs data-binding

我正在尝试使用 AngularJS 创建一种拖放 Playground 。 代码在 plunker 上。要理解这个问题,大多数情况下您需要看到骗子。

https://plnkr.co/edit/i82UOOqHRSJyEPN9293E

我正在尝试在这里创建类似节点的结构,可以将其拖到右侧的 Playground 上。

拖动时,我将节点 ID 添加到 $scope 中的 nodeChain 变量。 现在,我使用 ng-repeat 迭代 UI 中的 nodeChain 数组,在其中绘制节点只是为了检查添加到链中的节点是否正确反射(reflect)。

但是,

  1. 我没有看到 watchCollection 日志中的 nodeChain 更新,并且添加新节点时,在 Playground 上绘制的节点也没有更新。

有人可以告诉我为什么绑定(bind)没有生效吗?

提前致谢!

最佳答案

您需要触发 $digest 周期来更新值。当 $digest 循环开始时,它会触发每个观察者。这些观察者检查示波器模型的当前值是否与上次计算的值不同。如果是,则执行相应的监听函数。因此,如果 View 中有任何表达式,它们将被更新。

  if (!Bounds.within(event.pageX, event.pageY, leftPane)) {
                    scope.$parent.nodeChain.push(NodeChain.getNodeFromId(attr.nid))
                    scope.$apply();
            }

工作中的笨蛋:https://plnkr.co/edit/SNNsVOZps5Fy35dAQIqk?p=preview

您在控制台中收到 ng-repeat dupes 错误,因为数组 nodeChain 中存在重复值。

关于javascript - 无法在数组上进行双向数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44733288/

相关文章:

javascript - 声音波形是如何存储然后显示在 SoundCloud 上的?

css - Bootstrap data-spy ="affix"不适用于 Angular View 更改

angularjs - Node : npm install command shows error

java - 数据绑定(bind) - EditText 的 maxLength 属性

c# - 如何编写一个可以使用泛型从任何类输出数据的方法?

ASP.net 每周计划控件

javascript - 返回由 outerHTML 更改的元素

javascript - 更新 Knockout.js Observable 数组元素值

javascript - Modernizr、html5shiv、ie7.js 和 CSS3 Pie。什么时候使用哪个?

javascript - angularJS:谷歌地图未加载地点API