在我的Angular.js應用程序中,我遇到了這樣的問題。我有服務被稱爲user
,我把它叫做上app.run
從服務器獲取用戶數據,像這樣:Angular.js - 在控制器中等待,直到服務返回來自服務器的值
app.run(function (user, tracking) {
user.initialize();
... // some other code goes here..
});
這只是簡單地調用API的路線,並創建$rootScope.user
通過所有應用程序可用。
但不知何故控制器不時地加載更快,然後初始化去..和$rootScope
裏面它不包含user
對象。
function SomeController($scope, $rootScope, $routeParams) {
console.log($rootScope.user.name);
// sometimes returns error -
// TypeError: Cannot read property 'name' of undefined
}
所以,我怎麼能強迫所有控制器的負荷僅初始化爲$rootScope
後順利。我不想在每個控制器中的用戶上添加$watch
..因爲它看起來像是一個糟糕的決定,並且使代碼變得醜陋。
您的建議?謝謝!
你使用'ngRoute'嗎? Bcoz上面有「解決方案」,你可以使用它。 –
@IqbalFauzi是的,我使用''ngRoute''。這是否意味着我需要在每個控制器的''resolve''內調用''user.initialize()''? – Kosmetika