angularjs - 带有 true 的 Angular watch - 更改了哪个属性

标签 angularjs

我有一个对其进行深度观察的对象(在 $watch 的第三个参数中为真)。
当 watch 被触发时,我想知道哪个属性发生了变化。我得到的只是新旧值(value)。有什么好的方法可以知道发生了什么变化?我不想比较新旧对象并搜索更改的属性。

最佳答案

不是最干净的方法,但解决此问题的非纯 AngularJS 方法是使用 Object.observe()在对象上而不是 $watch 上,因为它传递了已更改属性的名称。

Object.observe() 的外部链接

  • Article - Respond to change with Object.observe
  • Compatability table
  • Polyfill


  • 另一种方法是覆盖对象上的 getter 和 setter,以便它们创建一个已更改的属性列表,该列表存储在对象内部。不确定这个的确切实现,它也不是那么干净。

    关于angularjs - 带有 true 的 Angular watch - 更改了哪个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435695/

    相关文章:

    javascript - grunt build 出现 "Broken @import"错误?

    html - 打印网页不会显示打印 View 并打印空白

    javascript - 使用 angular-nvd3 指令的饼图不会填满父 block

    javascript - AngularJS V1.4.7指令templateUrl动态路径

    javascript - 在 nginx 中使用带代理的预渲染

    javascript - 在 Angular.js 中,如何修改对象列表中元素的属性,这些对象在点击时使用 ng-repeat 迭代?

    javascript - Angular Directive(指令)建议

    angularjs - 使用 NPM 安装 Karma 时出现问题

    angularjs - 在 Controller 之间传递数据

    javascript - 如何将 _.SortBy() 与对象数组一起使用?