[英]Angular - async updates & rendering from service to controller
我有一個偵聽webSockets的Service
(不能使用回調或Promise,數據更新是隨機的)。 服務獲取更新並將其保存到服務的對象。 我有一個帶有控制器的angular-app頁面,該頁面在$scope
中具有服務對象。
但是在頁面上呈現數據時出現問題。 現在,我正在使用$ timeout()更新視圖,但正在尋找一種更優雅的方法。
我知道可以在服務的對象上使用$watch
,但是我認為它對於瀏覽器來說太重了。
那么在服務數據更改后呈現視圖/控制器的正確方法是什么?
您可以使用$rootScope.$broadcast
作為替代方案,但它也像$ watch一樣沉重,我不知道您為什么害怕使用$ watch,性能成本並不那么大!
要使用$broadcast
請將以下代碼行添加到您的服務中:
$rootScope.$broadcast('WatchedData', data);
然后在您的控制器中執行以下操作:
$scope.$on('WatchedData', function(event) { return stuff });
要了解有關$rootscope.$broadcast
更多信息,請檢查此答案
我建議您使用resolve ,它將在控制器和View實例化您的路由文件之前加載數據,並將Service注入功能
您可以觀看此演示PLunker演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.