我想在控制器開始運行之前初始化我的應用程序服務。AngularJS - 在控制器之前初始化服務
我本來以爲我可以先解決一個承諾,返回功能實現這一點:
va.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/', {templateUrl: '../partials/home.php', controller: 'VaCtrl',resolve: {
pp: vac.loadData
}});
}]);
var vac = va.controller('VaCtrl',function($scope,$http,$q,packingProvider){
console.dir(packingProvider.data[2]);
});
vac.loadData = function($http,$timeout,$q,packingProvider){
$http.post('../sys/core/fetchPacking.php').then(function(promise){
packingProvider.data = promise.data;
});
var defer = $q.defer();
$timeout(function(){
defer.resolve();
},2000);
return defer.promise;
};
然而,控制器仍然在承諾已經解決之前加載,結果我在控制檯大呼小叫
無法讀取屬性未定義
lting '2'。
我在做什麼錯了?
編輯:
此外,該控制器似乎變得與不確定pacingProvider.data對象調用了兩次,第一次,2個secons後一切正常。
如果您不想使用控制器中的值,則更容易,因爲您可以將結果注入控制器。編輯帖子以添加此示例。我可以編輯你的文章,以便將代碼示例添加到最後? –
雅肯定。希望看到這個例子。 –
它是'pp'還是'dd'? –