Повторное использование данных из службы

Я пытаюсь повторно использовать данные из моего сервиса. По сути, у меня есть две акции index и show книги.

В индексе я извлекаю все книги (очевидно) и показываю, как обычно, я извлекаю только данную запись. Но я также хочу показать связанные книги, и для этого я хотел бы повторно использовать данные, запрошенные в действии индекса.

мой сервис таков:

angular.module('myapp').factory('book', ['$http', '$q',
  function($http, $q) {

    var values = [];
    var book = {
      getAll: function() {
        var deferred = $q.defer();
        return $http({
          method: 'GET',
          url: '/books.json'
      }).success(function(data, status){
        values = data;
        deferred.resolve(data);
      })
      return deferred.promise;
    },
    get: function(id){
      return $http({
        method: 'GET',
        url: '/books/' + id + '.json'
      })
    },
    getValues: function(){
      return values;
    }
  }
  return book;
}]); 

и в моем ShowBookController я вызываю эту функцию:

getBook();
function getBook(){
  var promise = book.get(currentBook);
  promise.then(function(book){
    $scope.book = book.data[0];
  })
  console.log(book.getValues())
}

Но console.log печатает пустой массив.


person tvieira    schedule 06.01.2016    source источник


Ответы (1)


Я думаю, что вы могли бы переместить console.log(book.getValues()) внутрь, а затем обратный вызов, потому что get - это асинхронный вызов API.

Надеюсь, это поможет

person FedeF    schedule 06.01.2016