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

Angular JS: Service Response not Saving to Variable

我正在尝试弄清楚为什么此服务的响应没有保存到 $scope.counter。我在我的服务 fetchCustomers(p) 中添加了一个函数,它接受一些参数和 returns 一个数字,我想将其保存到 $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。有什么想法吗?

如果我对你的问题的理解正确,那么你是在设置 $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