我正在尝试使用AngularJS创建一种拖放操场。 代码在plunker上。要理解这个问题,大多数情况下你需要看到这个问题。
https://plnkr.co/edit/i82UOOqHRSJyEPN9293E
我正在尝试在这里创建类似节点的结构,可以将其拖到右侧的游乐场。
在拖动时,我将节点ID添加到nodeChain
中的$scope
变量。
现在我正在用nodeChain
在UI中迭代ng-repeat
数组,我正在绘制节点,以检查添加到链中的节点是否正确反映。
然而,
nodeChain
日志中的watchCollection
更新以及添加新节点时操场上绘制的节点没有更新。有人可以告诉我为什么绑定没有生效?
提前致谢!
答案 0 :(得分:1)
您需要触发$ digest
周期来更新值。当$digest
周期开始时,它会激活每个观察者。这些观察者检查范围模型的当前值是否与上次计算的值不同。如果是,则执行相应的侦听器函数。因此,如果您在视图中有任何表达式,它们将被更新。
if (!Bounds.within(event.pageX, event.pageY, leftPane)) {
scope.$parent.nodeChain.push(NodeChain.getNodeFromId(attr.nid))
scope.$apply();
}
Working Plunker :https://plnkr.co/edit/SNNsVOZps5Fy35dAQIqk?p=preview
您的控制台中出现ng-repeat dupes错误,因为数组nodeChain
中存在重复值。
答案 1 :(得分:1)
如果我理解你的问题,你想在下面的空格中添加删除的节点。请参阅plunkr。
当您更改范围之外的模型时,您应该添加$scope.apply()
。