2014-07-12 51 views
0

我有一項服務取決於另一項服務。當其他服務上的方法給出不同的結果時(比以前),我希望自動更改主服務上的屬性(然後通過控制器視圖綁定自動更改該視圖,以進入視圖)。Angular:服務中:觀察其他服務中的更改

這個問題可以理解嗎?這怎麼能實現?我可以讓控制器進行觀察,但也許可以讓我的主要服務自己監視取決於服務的更改(不需要在每個控制器中都有手錶)?

回答

0

添加其他服務作爲依賴,你的主要服務,並添加下面的函數有太多:

$scope.watch($otherService.getValue, function (newValue, oldValue) { 

    alert("value changed from " + oldValue + " to " + newValue); 
    $scope.propertyToChange = .... 

}); 

的GetValue是一個返回觀看價值的其他服務功能。如果此功能的結果改變,則觀察者將被觸發。

我現在無法測試該片段,對不起。但我希望它能幫助你。

+0

但在我的主要服務中,是否存在$ scope這樣的事情?服務具有屬性和方法,但$ scope? – EricC

+0

哦,是的......沒錯。然後把'$ scope.watch'放到你的控制器中,並在該函數中調用你的主要服務。因此工作流程將是:第二次服務更改 - >控制器檢測到 - >控制器通知主服務。 – Tom

+0

但是之後我必須在所有控制器(使用此服務)中重複此$ scope.watch ...但是,如果沒有辦法避免這種情況... – EricC