我有一個服務對象,它公開一個數組,我希望監視數組中的變化(然後調用一個方法)。在AngularJS服務中觀察數組的變化
這在控制器中通過監視$ scope的數組變化是微不足道的,但是如何在一個服務中完成相同的操作呢? 該服務在多個控制器中共享,我不想在很多地方實現該邏輯。
我已經嘗試使用Polymer的ArrayObserver,但它似乎不適用於Angular。
有沒有人有任何建議? 感謝
我有一個服務對象,它公開一個數組,我希望監視數組中的變化(然後調用一個方法)。在AngularJS服務中觀察數組的變化
這在控制器中通過監視$ scope的數組變化是微不足道的,但是如何在一個服務中完成相同的操作呢? 該服務在多個控制器中共享,我不想在很多地方實現該邏輯。
我已經嘗試使用Polymer的ArrayObserver,但它似乎不適用於Angular。
有沒有人有任何建議? 感謝
您可以添加在$rootScope
手錶,即:
.service("mySvc", function($rootScope,...) {
var myArray = ...
...
$rootScope.$watchCollection(
function() {
return myArray;
},
function(newval) {
...
}
);
但是你必須要格外小心註銷手錶時,(如果)它不再需要。
嗨,您可以使用$watchCollection
觀看陣列改變
var arrayChangeListner = $rootScope.$watchCollection(function(){
});
註銷如果不再需要爲@Nikos提到
$手錶返回註銷功能手錶,要註銷調用該函數像這
arrayChangeListner();
參考:
希望它可以幫助
我希望有辦法做到這一點,而無需使用rootScopet,這些都是短暫的模型,我不想rootScope停止處置引用。手動銷燬可能是一種選擇,但在這種使用情況下很難提供幫助 – monobyte