Angular JS:服务响应未保存到变量

时间:2015-10-29 00:00:29

标签: angularjs angularjs-scope angular-services

我试图弄清楚为什么此服务的响应不会保存到$scope.counter。我已向我的服务fetchCustomers(p)添加了一项功能,该功能需要一些参数并返回一个数字,我想将其保存到$scope.counter

服务

angular.module('app')
.factory('MyService', MyService)

function MyService($http) {
  var url = 'URL'';

  return {
    fetchTotal: function(p) {
      return $http.get(url, { params: p })
        .then(function(response) {
          return response.data.meta.total;
        }, function(error) {
          console.log("error occured");
        })
    }
  }
}

控制器

$scope.counter = MyService.fetchTotal(params).then(function(response) {
  console.log(response);
  return response;
});

出于某种原因,这不起作用。它的控制台记录了该值,但没有将其保存到$scope.counter。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您可以将$scope.counter设置为承诺,而不是回复。

MyService.fetchTotal(params).then(function(response) {
  // Anything dealing with data from the server
  // must be put inside this callback
  $scope.counter = response;
  console.log($scope.counter); // Data from server
});

// Don't do this
console.log($scope.counter); // Undefined