在我正在處理的項目中,我們在$rootScope
上有一個變量,名爲events
。我可以在我的控制器中使用$rootScope.events
將其注入到我的控制器後訪問它。AngularJS在設置時獲取rootScope變量
服務設置$rootScope
變量上的事件可能需要一些時間。現在我要添加一個需要變量第一個事件ID的新功能。問題是,在設置了$rootScope.events
之前會調用它。在設置了$rootscope.events
後,我無法弄清楚如何在控制器中調用該方法。我之前使用過$watch
,但它似乎並沒有在這個變量上工作。該代碼我想:
$scope.$watch('$rootScope.events', function() {
if ($rootScope.events.length > 0) {
getDetails(); // function I want to call after $rootscope.events is set
$log.debug($rootScope.events); // debugging line
}
});
我加入了$rootScope.events.length > 0
,以避免它得到一個無限循環。不知道這是否有必要。有什麼我需要添加此功能的解決方案?像這樣的手錶?或者我做錯了什麼?
我不認爲你需要更多的代碼,然後我添加到這篇文章,因爲我剛剛在我的控制器中注入$scope
和$rootScope
,然後$log.debug()
應該用set變量調用。目前它返回一個空變量。如果我錯了,請在評論中告訴我。
Wauww我很親密。這更有意義。謝謝! – JeroenE
@JeroenE這應該使用'$ scope。$ watch'並且更安全。如果放在控制器中並且當前的路由/狀態改變,$ rootScope的手錶可能不會被清除。每當您傳入此代碼時,都會留下一個/多個監視,以減緩應用程序的運行速度。 – Walfrat
@JeroenE可以使用'$ scope。$ watch('$ root.events',...)'來解決這個問題。 – bugged87