コントローラーが実行を開始する前に、アプリケーション サービスを初期化しようとしています。
最初に約束を返す関数を解決することでこれを達成できると思っていたでしょう:
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' を読み取ることができません
私に。
私は何を間違っていますか?
編集:
また、コントローラーは 2 回呼び出されたようです。最初は未定義の pacingProvider.data オブジェクトで、2 秒後にはすべて問題なく呼び出されます。