【问题标题】:Angular $scope.$watch is not triggered when i assign $scope to another variable and change the watched value on new variable当我将 $scope 分配给另一个变量并更改新变量的监视值时,不会触发 Angular $scope.$watch
【发布时间】:2015-02-15 02:37:05
【问题描述】:

我的$scope 中有一个数组和一个观察者。 Watcher 检测数组属性的变化。观察者按预期工作:当我更新数组内容时触发监听器。

但是,当我将 $scope 分配给其他变量 (var newScope = $scope) 时, 然后 push 一个 item 到 newScope 的数组中,不会调用 watcher。

Javascript 应该通过引用将 $scope 分配给 newScope 吗?因此,$scopenewScope 将引用内存中的同一个对象。那么,为什么我修改newScope上的数组时没有调用watcher?

【问题讨论】:

  • 你能分享一些代码吗?

标签: javascript angularjs scope watch


【解决方案1】:

如果您将$scope 分配给newScope,那么除非您更新$scope,否则观看$scope 将无济于事。引用不再是$scope你想看的newScope

【讨论】:

  • Javascript 应该通过引用将 $scope 分配给 newScope 吗?因此,$scope 和 newScope 将引用内存中的同一个对象。对不对?
  • 它们都存在于内存中,是的,但仍然作为它们自己的变量。所以调用 newScope 并不是指 $scope,即使它具有它的所有属性和方法。例如,如果您要使用像位置这样的角度方法(我相当确定范围内的位置更新),它不会修改 newScope 它会修改 $scope 因为那是角度工作的原始对象。
猜你喜欢
  • 2016-03-07
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多