2014-12-23 49 views
0

因此,我有一個控制器監視來自注入到其中的幾個不同服務的更改。控制器當前正在繼承每個服務的作用域,以$觀察它的一個值。我很想找到一種方法來在不將整個服務範圍拖入組合的情況下觀察一個值。這是我爲它的僞代碼:

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

} 

如何避免使用這些服務範圍,以更新控制器任何指針將不勝感激。

非常感謝

+0

是'功能控制器($範圍,mySvc){}'? –

+1

這甚至不是角度控制器的有效代碼。問題並不清楚,當代碼無效且沒有多少顯示時,它就無濟於事。 「將服務範圍拖入其中」甚至意味着什麼? – charlietfl

+0

就像我說的它的僞代碼,對我有什麼粗略的想法。現在$ watch正在引入整個服務範圍。我怎麼能這樣做,所以我不從控制器的服務範圍讀取數據? – appthat

回答

0

您可以使用Angular的一個非常酷的功能。 Angularjs帶有一個內置的郵件系統的模塊/服務隊/工廠等

在服務之間的通信可以使用

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

和控制器,你可以趕上像這樣的變化:

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

}); 

當然,要使用這種方法,您需要知道該值何時會發生變化的方法,以便您可以將其廣播到控制器。

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

乾杯

有關$廣播的詳細信息(和/或$排放)這裏是一個參考:Why do we use $rootScope.$broadcast in AngularJS? 正式文件:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope

相關問題