Javascript 角度$scope。当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发$watch

Javascript 角度$scope。当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发$watch,javascript,angularjs,scope,watch,Javascript,Angularjs,Scope,Watch,我在$scope中有一个数组和一个观察者。监视程序检测阵列属性的更改。Watcher按预期工作:当我更新数组内容时触发侦听器 但是,当我将$scope分配给其他变量var newScope=$scope时, 然后将一个项目推送到newScope的数组中,则不会调用观察者 Javascript应该通过引用将$scope分配给newScope,对吗?所以,$scope和newScope将引用内存中的同一个对象。那个么,在我修改newScope上的数组时,为什么不调用watcher呢 如果将$scop

我在$scope中有一个数组和一个观察者。监视程序检测阵列属性的更改。Watcher按预期工作:当我更新数组内容时触发侦听器

但是,当我将$scope分配给其他变量var newScope=$scope时, 然后将一个项目推送到newScope的数组中,则不会调用观察者


Javascript应该通过引用将$scope分配给newScope,对吗?所以,$scope和newScope将引用内存中的同一个对象。那个么,在我修改newScope上的数组时,为什么不调用watcher呢

如果将$scope分配给newScope,则除非更新$scope,否则观看$scope不会有任何作用。引用不再是$scope您想观看newScope

您可以共享一些代码吗?Javascript应该通过引用将$scope分配给newScope,对吗?所以,$scope和newScope将引用内存中的同一个对象。是吗?它们都存在于内存中是的,但仍然是它们自己的变量。因此,调用newScope并不引用$scope,即使它拥有所有的属性和方法。例如,如果要使用像location i’m相当确定的location updates in scope这样的angular方法,它不会修改newScope,而是会修改$scope,因为angular使用的是原始对象。