AngularJS:检测模型是否已更改

时间:2015-03-10 16:04:29

标签: angularjs

我有树视图。用户可以选择节点,然后编辑该节点的配置。我想要一种方法来检测这是否与原始版本有所改变。

我见过$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);

1 个答案:

答案 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()

继续编码。干杯