Фабрика AngularJS и контроллер

здесь небольшая проблема, у меня есть контроллер, который взаимодействует с фабриками, но как я могу передать результат фабрики в функцию? Что-то, что я пробовал:

.controller('testCtrl', ['$scope', 'foo', 'boo', function($scope, foo, boo){

     foo.get().then(function(response){
          $scope.foo = response;   
     });

     boo.get().then(function(response){
          $scope.boo = response;   
     });

     // Why this will not work?
     function test(){
          var getFoo = $scope.foo;
          var getBoo = $scope.boo; 
     };

}]

Пример выше не работает, как я могу получить эту работу?

Спасибо.


person Jack    schedule 31.05.2014    source источник
comment
Определить не получится. Вы используете асинхронный код. Это все равно, что положить хлеб в тостер и продолжать что-то делать, пока хлеб поджаривается. Вы не можете ожидать, что хлеб поджарится сразу после того, как вы нажмете кнопку тостера. У вас будет поджаренный хлеб только тогда, когда тостер звенит, т.е. когда функция, переданная в then(), была выполнена.   -  person JB Nizet    schedule 31.05.2014
comment
Не сработает = Ответ не будет передан. Спасибо за объяснение тостера, я нашел решение :)   -  person Jack    schedule 31.05.2014
comment
Тогда это работает - ответ будет передан.   -  person fdreger    schedule 31.05.2014


Ответы (1)


Парням, которые пришли после вечеринки. Рабочий пример без использования $scope.

hoge.controller('testCtrl', ['$scope', 'foo', 'boo', function($scope, foo, boo){
  function test() {
     var getFoo = null;
     var getBoo = null; 

     Promise.all([foo.get(), boo.get()]).then(function(results) {
       getFoo = results[0];
       getBoo = results[1];
     });
   };
}]
person IzumiSy    schedule 20.01.2017