我正在尝试使用AngularJS创建一种拖放式游乐场。
该代码在punker上。为了理解这个问题,大多数情况下,您将需要查看活塞。
https://plnkr.co/edit/i82UOOqHRSJyEPN9293E
我正在尝试在此处创建类似节点的结构,可以将其拖到右侧的操场上。
拖动时,我将节点ID添加到nodeChain
中的$scope
变量中。
现在,我使用nodeChain
迭代UI中的ng-repeat
数组,在此绘制节点只是为了检查添加到链中的节点是否正确反映。
然而,
我看不到从nodeChain
日志进行的watchCollection
更新以及添加新节点时在操场上绘制的节点都没有更新。
有人可以告诉我为什么绑定没有生效吗?
提前致谢!
最佳答案
您需要触发$ digest
周期来更新值。 $digest
周期开始时,将触发每个观察者。这些观察者检查范围模型的当前值是否与上次计算的值不同。如果是,则执行相应的侦听器功能。因此,如果视图中有任何表达式,它们将被更新。
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
中存在重复的值。