vm.education = common.dataservice.getAllEducations(currentUser.id);
vm.education.$promise.then(function(data){
console.log(data);
});
[a bunch of code that also utilizes vm.education]
我在controller.js文件中的angularJS中有上面的代码。我的问题是如何在继续执行其余代码之前等待common.dataservice.getAllEducations的返回?
如果我不等待获取数据的完成,那么引用vm.education的代码将为null。
答案 0 :(得分:1)
这可以通过$routeProvider的resolve属性来实现。这会延迟控制器,直到所有值都已解决。
您可以使用
中的内容angular.module('myApp', [])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/education', {
controller: ['$scope', 'education', function($scope, education) {
...
vm.education = education;
},
resolve: {
education: ['common', 'currentUser', function(common, currentUser) {
return common.dataservice.getAllEducations(currentUser.id)
.then(function(response) {
return response.data;
});
}
});
}]);