Javascript 观察AngularJS服务中的数组更改
我有一个服务对象,它公开了一个数组,我希望监视该数组(在服务中)的更改,然后调用一个方法 在控制器中,通过观察对其$scope上的数组的更改,这是微不足道的,但是如何在服务中实现同样的更改呢? 该服务在多个控制器中共享,我不想在许多地方实现该逻辑 我试过使用Polymer的ArrayObserver,但它似乎不适用于Angular 有人有什么建议吗?Javascript 观察AngularJS服务中的数组更改,javascript,angularjs,Javascript,Angularjs,我有一个服务对象,它公开了一个数组,我希望监视该数组(在服务中)的更改,然后调用一个方法 在控制器中,通过观察对其$scope上的数组的更改,这是微不足道的,但是如何在服务中实现同样的更改呢? 该服务在多个控制器中共享,我不想在许多地方实现该逻辑 我试过使用Polymer的ArrayObserver,但它似乎不适用于Angular 有人有什么建议吗? 谢谢您可以在$rootScope上添加手表,即: .service("mySvc", function($rootScope,...) {
谢谢您可以在
$rootScope
上添加手表,即:
.service("mySvc", function($rootScope,...) {
var myArray = ...
...
$rootScope.$watchCollection(
function() {
return myArray;
},
function(newval) {
...
}
);
但是,当不再需要手表时,您必须格外小心才能将其注销。您好,您可以使用
$watchCollection
查看阵列更改
var arrayChangeListner = $rootScope.$watchCollection(function(){
});
如@Nikos所述,如果不再需要手表,请注销该手表
$watch返回一个取消注册函数,以像这样取消注册调用该函数
arrayChangeListner();
供参考:
希望它有帮助我希望找到一种不使用rootScope的方法,这些是暂时的模型,我不希望引用rootScope。手动销毁可能是一种选择,但在本用例中很难实现