簡體   English   中英

如何在不使用服務范圍angularjs的情況下觀察服務價值的變化

[英]how to $watch a change on service value without using the services scope angularjs

因此,我有一個控制器來監視注入其中的幾種不同服務的更改。 控制器當前正在繼承服務的每個范圍,以從其中監視一個值。 我很想找到一種方法來監視一個值,而又不會將服務的整個范圍拖到組合中。 這是我的偽代碼:

function controller {
    $scope.$watch(myService.value, function(newVal) {
        $scope.value = newVal;
    });

}

關於如何避免使用服務范圍來更新控制器的任何指示將被理解。

非常感謝

您可以使用Angular的一個很酷的功能。 Angularjs帶有內置的消息傳遞系統,用於在模塊/服務/工廠等之間進行通信。

在您的服務中您可以使用

$rootScope.$broadcast('value:changed', { value: newValue });

在您的控制器中,您可以像這樣捕獲更改:

$scope.$on('value:changed', function(message) {
   $scope.value = message.newValue;

});

當然,要使用此方法,您需要一種方法來知道該值何時會更改,以便可以將其廣播到控制器。

希望這有所幫助! 讓我知道!

干杯

有關$ broadcast(和/或$ emit)的更多信息,請參考: 為什么我們在AngularJS中使用$ rootScope。$ broadcast? 官方文檔: https : //docs.angularjs.org/api/ng/type/ $ rootScope.Scope

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM