我有一个服务对象,它公开了一个我想要观察变化的数组(在服务中),然后调用一个方法。
通过观察对其范围内的数组的更改,在控制器内部这是微不足道的,但如何在服务中完成相同的操作呢? 该服务在多个控制器中共享,我不想在很多地方实现逻辑。
我尝试过使用Polymer的ArrayObserver,但它似乎不适用于Angular。
有没有人有任何建议? 感谢
答案 0 :(得分:0)
您可以在$rootScope
上添加手表,即:
.service("mySvc", function($rootScope,...) {
var myArray = ...
...
$rootScope.$watchCollection(
function() {
return myArray;
},
function(newval) {
...
}
);
但是,当(如果)不再需要时,您必须格外小心取消注册。
答案 1 :(得分:0)
您好您可以使用$watchCollection
来观看数组更改
var arrayChangeListner = $rootScope.$watchCollection(function(){
});
如果不再需要,请取消注册手表,如@Nikos所述
$ watch返回注销功能,取消注册该函数的调用
arrayChangeListner();
供参考: