我有树视图。用户可以选择节点,然后编辑该节点的配置。我想要一种方法来检测这是否与原始版本有所改变。
我见过$watch
的所有示例都发生在作用域级别上,并且不允许我查看模型何时发生更改。如何设置一个手表(或类似的东西),它会告诉我哪个对象已被更改,以便我可以执行类似
$scope.itemChanged = function(item) {
item.hasChanged = angular.equals(item, item.original);
}
我已尝试过像this answer这样的深度观察示例,但它们只告诉我整个树已经改变,而不是哪个节点。 e.g。
$scope.$watch('tree', function (oldValue, newValue, scope) {
console.log("changed", oldValue, newValue, scope);
}, true);
答案 0 :(得分:1)
我没有做过多少角度,但你的问题引起了我的兴趣,所以我认为这篇文章可能会对你有所帮助angularjs treeview。该示例具有我认为您正在寻找的内容,因为它返回了您可以操作的.selectNodeHead。
&(c.angularTreeview?(a.$watch(e,function(m,b){g.empty().html($compile(k)(a))},!1),a.selectNodeHead=a.selectNodeHead||function(a,b){b.stopPropagation&&b.stopPropagation()
继续编码。干杯