angularjs - 更改 AngularJS 服务的值不会触发指令内的监视

标签 angularjs angularjs-directive angularjs-scope

我在让 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/

相关文章:

javascript - 如何从 Angular JS 中的 ng-repeat 复选框值获取对象

angularjs - Angular .then() 无法识别

javascript - 更改输入后变量未更新

angularjs - 如何从 Angular Controller 或模块控制 toastr 选项(或全局设置)

unit-testing - 如何使用 $httpBackend 对 angularjs promise 链进行单元测试

javascript - 如何动态设置 Angular 下拉值?

angularjs - Angular ng-required 不适用于自定义指令

css - 在 ng-grid 的标题中包装单词

javascript - AngularJS 指令等待模板呈现

angularjs - AngularJS 中指令隔离范围与 ng-repeat 范围