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

Angularjs Angular JS:服务响应未保存到变量,angularjs,angularjs-scope,angular-services,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(

我正在试图找出此服务的响应未保存到
$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
。有什么想法吗?

如果我正确理解了您的问题,您将
$scope.计数器设置为承诺,而不是响应

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

如果我正确理解了您的问题,您将
$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

如果我正确理解了您的问题,您将
$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

如果我正确理解了您的问题,您将
$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


可能只是一个输入错误,但是在
'URL''
周围有一个额外的引号,您正在为返回的承诺分配
$scope.counter
,而不是响应。您的回调应该有分配
$scope.counter=response
是的,很抱歉,这可能只是一个输入错误,但是您在
'URL'
周围有一个额外的引号,您将
$scope.counter
分配给返回的承诺,而不是响应。您的回调应该有分配
$scope.counter=response
是的,很抱歉,这可能只是一个输入错误,但是您在
'URL'
周围有一个额外的引号,您将
$scope.counter
分配给返回的承诺,而不是响应。您的回调应该有分配
$scope.counter=response
是的,很抱歉,这可能只是一个输入错误,但是您在
'URL'
周围有一个额外的引号,您将
$scope.counter
分配给返回的承诺,而不是响应。您的回调应该具有赋值
$scope.counter=response
是的,很抱歉,这是一个输入错误,但是当我现在执行
$scope.counter
时,它返回为未定义:
MyService.fetchTotalCustomers(params)。然后(函数(响应){$scope.counter=response;});console.log($scope.counter)
console.log(response.data.meta.total)
在您的服务中,查看这是否未定义。这将注销号码。这就是为什么它让我发疯的原因。把它放在承诺回调中<代码>然后(函数(响应){$scope.counter=response;console.log($scope.counter);})
注意,
console.log()
现在位于承诺回调中。只要在承诺回调中设置
$scope.counter
,它就可以在视图中使用。它应该在这一点上起作用。你测试过了吗?如果没有,请使用HTML标记更新您的问题,但当我现在执行
$scope.counter
时,它返回为未定义:
MyService.fetchTotalCustomers(params)。然后(函数(响应){$scope.counter=response;});console.log($scope.counter)
console.log(response.data.meta.total)
在您的服务中,查看这是否未定义。这将注销号码。这就是为什么它让我发疯的原因。把它放在承诺回调中<代码>然后(函数(响应){$scope.counter=response;console.log($scope.counter);})注意,
console.log()
现在位于承诺回调中。只要在承诺回调中设置
$scope.counter
,它就可以在视图中使用。它应该在这一点上起作用。你测试过了吗?如果没有,请使用HTML标记更新您的问题,但当我现在执行
$scope.counter
时,它返回为未定义:
MyService.fetchTotalCustomers(params)。然后(函数(响应){$scope.counter=response;});console.log($scope.counter)
console.log(response.data.meta.total)
在您的服务中,查看这是否未定义。这将注销号码。这就是为什么它让我发疯的原因。把它放在承诺回调中<代码>然后(函数(响应){$scope.counter=response;console.log($scope.counter);})注意,
console.log()
现在位于承诺回调中。只要在承诺回调中设置
$scope.counter
,它就可以在视图中使用。它应该在这一点上起作用。你测试过了吗?如果没有,请使用HTML标记更新您的问题,但当我现在执行
$scope.counter
时,它返回为未定义:
MyService.fetchTotalCustomers(params)。然后(函数(响应){$scope.counter=response;});console.log($scope.counter)
console.log(response.data.meta.total)
在您的服务中,查看这是否未定义。这将注销号码。这就是为什么它让我发疯的原因。把它放在承诺回调中<代码>然后(函数(响应){$scope.counter=response;console.log($scope.counter);})注意,
console.log()
现在位于承诺回调中。只要在承诺回调中设置
$scope.counter
,它就可以在视图中使用。它应该在这一点上起作用。你测试过了吗?如果没有,请使用HTML标记更新您的问题