2015-07-09 2 views
-2
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] 

У меня есть код выше в angularJS в файле controller.js. Мой вопрос в том, как дождаться возвращения common.dataservice.getAllEducations, прежде чем продолжить выполнение оставшейся части кода?Как дождаться обещания получить данные до возвращения

Если я не дождался завершения получения данных, тогда код, который ссылается на vm.education, будет равен нулю.

+3

код, который нуждается в 'vm.education' положить в .then' 'раздел следующего() –

+0

Должен ли я сделать это? Это много кода, и я просто хотел бы получить информацию и продолжить с кодом. – Mot1on

+0

@ Mot1on, 'vm.education.then (функция (данные) {...});', у вас есть синтаксическая ошибка, отмените '$ prom'. Оберните кодовые базы, которые нужно ждать в 'then (function() {..});' Тогда это должно быть хорошо. – Roylee

ответ

1

Это можно решить с разрешением объекта $routeProvider. Это задерживает контроллер до тех пор, пока все значения не будут устранены.

Вы могли бы использовать это что-то вдоль линий

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; 
       }); 
     } 
     }); 
    }]); 
Смежные вопросы