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