从服务中重用数据

时间:2016-01-06 01:45:14

标签: angularjs angular-services

我正在尝试重复使用我服务中的数据。基本上,我有两个行为indexshow本书。

在索引中,我获取所有书籍(显然)并按照惯例显示我只获取给定记录。但我也想展示相关书籍,为此我想重用索引动作中要求的数据

我的服务是:

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会打印一个空数组。

1 个答案:

答案 0 :(得分:1)

我认为你可以将console.log(book.getValues())移到回调中,因为get是一个异步的api调用。

我希望有帮助