2015-12-25 3 views
0

Я пытаюсь сделать простой запрос на получение часов, но он просто не работает. У меня есть служба, которая отвечает за массив, когда я определил массив, который я вызываю для службы, которую я создал для restAngular.RESTAngular: запрос GET - массив объектов

первый сервис:

app.factory('ServiceArray',function($filter,restAngularService){ 

     var Cards = restAngularService.getC(); 
     console.log(Cards); 
return{ 
      getCards : function(){ 
       return Cards; 
      } 
} 
//more code... 

} 

Я получаю неопределенными от console.log

restAngular служба:

app.factory('restAngularService',function($filter,Restangular){ 
    var Accounts = Restangular.all('api'); 
    var baseAccounts = Accounts.one('get'); 
    return{ 
     getC : function(){ 
      var Cards = []; 
      if(baseAccounts.get()){ 
       baseAccounts.getList().then(function(b) { 
        console.log(b.plain()); 
        Cards = b.plain(); 
        return Cards; 

       }); 

      } else { 
       return Cards = [{}]; 
      } 
    } 
} 

из этого console.log я получаю:

[Объект, объект]

код контроллера:

$scope.Cards = ServiceArray.getCards(); 
condole.log($scope.Cards); 

Я получаю неопределенный от console.log

ответ

0

пытается вернуть обещание из метода ЕОКПА так:

app.factory('restAngularService',function($filter,Restangular, $q){ 
    var Accounts = Restangular.all('api'); 
    var baseAccounts = Accounts.one('get'); 

    var deferred = $q.defer(); 

    return{ 
     getC : function(){ 
      var Cards = []; 
      if(baseAccounts.get()){ 
       baseAccounts.getList().then(function(b) { 
        console.log(b.plain()[0]); 
        Cards = b.plain()[0]; 
        deferred.resolve(Cards); 
       }); 
      } else { 
       deferred.resolve([{}]); 
      } 

      return deferred.promise; 
    } 
} 

И затем использовать эту услугу в вашем контроллере:

var Cards; 
restAngularService.getC().then(function(cards){ 
    Cards = cards; 
    console.log(Cards); 
}); 

UPD Поскольку ваш метод baseAccounts.getList() является асинхронным, он возвращает обещание. Поэтому вы не можете просто называть это синхронно. Поэтому вы называете это и добавляете обратный вызов с then. И этот обратный вызов будет выполнен, когда ваше обещание будет разрешено (например, вы получите свой JSON из сети)

+0

Я получаю: ReferenceError: отложен не определено –

+0

обеспечивает зависимость $ q в параметре вашей услуги. Я думаю, вы его пропустили. –

+0

Я так и не узнал его –