我正在尝试在控制器开始运行之前初始化我的应用程序服务。
我原以为我可以通过首先解决一个承诺返回函数来实现这一点:
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;
};
然而,在promise被解决之前,控制器仍然被加载,导致控制台大喊大叫
无法读取未定义的属性“2”
对我。
我究竟做错了什么?
编辑:
此外,控制器似乎被调用了两次,第一次使用未定义的 pacingProvider.data 对象,2 秒后一切正常。