我试图弄清楚为什么此服务的响应不会保存到$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
。有什么想法吗?
答案 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