一尘不染

AngularJS:自动检测模型的变化

angularjs

假设我想做一些事情,只要模型的值发生更改,就可以自动运行一些代码(例如将数据保存到服务器)。通过ng- change在每个控件上设置可能会更改模型的内容来做到这一点的唯一方法是吗?

即,使用视图,事情随着模型的改变而正确地改变,而不必显式地挂钩任何东西。是否存在可以运行保存到服务器的代码的类似物?就像是

myModel.on('change', function() {
  $.post("/my-url", ...);
});

就像您可能会看到像骨干一样。


阅读 188

收藏
2020-07-04

共1个答案

一尘不染

在具有{{}}和/或ng模型的视图中,Angular $watch()在幕后为您设置es。

默认情况下$watch按引用进行比较。如果将第三个参数设置$watchtrue,则Angular会“浅”监视对象的更改。对于数组,这意味着比较数组项,对于对象映射,这意味着观察属性。所以这应该做你想要的:

$scope.$watch('myModel', function() { ... }, true);

更新 :Angular v1.2为此添加了一个新方法`$
watchCollection()

$scope.$watchCollection('myModel', function() { ... });

请注意,“浅”一词用于描述比较,而不是“深”,因为未遵循引用-例如,如果监视的对象包含作为对另一个对象的引用的属性值,则不遵循该引用来进行比较另一个对象。

2020-07-04