我正在尝试使用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中存在重复的值。

09-17 09:34