当前位置: 首页 > 面试题库 >

AngularJS:自动检测模型的变化

尉迟韬
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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

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

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

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



 类似资料:
  • 由于双向数据绑定的本质,在Angular 1中不能保证父节点在子节点之前总是被检查。 有可能子节点可以改变父节点或兄弟节点或树中的任何其他节点,这又会在链中触发新的更新。 这使得变化检测机制难以遍历所有节点,并可能掉入具有臭名昭着的“震荡”循环中: 在Angular 2中,改变被保证单向传播。 更改检测器将遍历每个节点一次,始终从根开始。 这意味着父组件始终在其子组件之前检查。

  • 脚本例子一: !include "MUI.nsh" OutFile "S32.exe" !define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentsPage1Pre !insertmacro MUI_PAGE_COMPONENTS Sectiongroup "完整独立程序" SecOL3 Section /o "QQ直播程序" Sec60 Sectio

  • 主要内容:ng-model 指令,AngularJS 实例,双向绑定,AngularJS 实例,验证用户输入,AngularJS 实例,应用状态,AngularJS 实例,CSS 类,AngularJS 实例ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值。 ng-model 指令 指令可以将输入域的值与 AngularJS 创建的变量绑定。 AngularJS 实例 < div ng-app= "myApp" ng-contr

  • app/movie.component.ts 让我们再回顾一下它背后的逻辑。 当用户单击按钮时,调用方法并更新actor对象的属性。 当变化检测分析绑定到AppComponent模板的属性时,它将看到与之前相同的景象: Is slogan !== previousSlogan No, it’s the same. Is ? No, it’s the same. 让我们重新运行应用程序,但这次我们将

  • Hibernate 的用户曾要求一个既可自动分配新持久化标识(identifier)保存瞬时(transient)对象,又可更新/重新关联脱管(detached)实例的通用方法。saveOrUpdate() 方法实现了这个功能。 // in the first session Cat cat = (Cat) firstSession.load(Cat.class, catID); // in a