2014-06-19 62 views
1

我有一個服務對象,它公開一個數組,我希望監視數組中的變化(然後調用一個方法)。在AngularJS服務中觀察數組的變化

這在控制器中通過監視$ scope的數組變化是微不足道的,但是如何在一個服務中完成相同的操作呢? 該服務在多個控制器中共享,我不想在很多地方實現該邏輯。

我已經嘗試使用Polymer的ArrayObserver,但它似乎不適用於Angular。

有沒有人有任何建議? 感謝

回答

0

您可以添加在$rootScope手錶,即:

.service("mySvc", function($rootScope,...) { 
    var myArray = ... 
    ... 
    $rootScope.$watchCollection(
     function() { 
      return myArray; 
     }, 
     function(newval) { 
      ... 
     } 
    ); 

但是你必須要格外小心註銷手錶時,(如果)它不再需要。

+0

我希望有辦法做到這一點,而無需使用rootScopet,這些都是短暫的模型,我不想rootScope停止處置引用。手動銷燬可能是一種選擇,但在這種使用情況下很難提供幫助 – monobyte