我在让 watch 在指令内工作时遇到问题。我在这里整理了一个简单的例子。 http://plnkr.co/edit/A7zbrsh8gJhdpM30ZH2P
我有一个服务和两个指令。一个指令更改服务中的一个属性,另一个指令对该属性进行监视。我希望 watch 在属性更改时会触发,但事实并非如此。
我在网站上看到了其他一些类似的问题,但他们接受的解决方案在这里不起作用。我已经考虑过使用 $broadcast 或尝试实现一个观察者,但看起来这应该可行,如果可能的话,我不想让事情变得过于复杂。
最佳答案
代替
this.currentObject = newObject;
用
angular.copy(newObject, this.currentObject);
用原码,
viewer
指令正在监视原始对象,{}
.当currentObject
设置为 newObject
,$watch 仍在寻找对原始对象的更改,而不是 newObject
.angular.copy() 修改原始对象,因此 $watch 会看到该更改。
关于angularjs - 更改 AngularJS 服务的值不会触发指令内的监视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995229/