我想从我的控制器获取$ http请求的结果。
这是我的服务:
.service('postService', function($http, apiUrl) {
return {
post: function(uri, params) {
$http.post(apiUrl + uri, params).then(function(items) {
return items.data;
});
}
};
})
这就是我在控制器中所做的事情:
var getData = postService.post('my_service_url', {id: 'test'});
getData.then(function(result) {
$scope.data = result;
console.log(data);
});
但我抓住了错误:
getData未定义
实现这一目标的方法是什么?
答案 0 :(得分:3)
您需要返回 $http.post
return {
post: function(uri, params) {
return $http.post(apiUrl + uri, params);
}
};
然后你可以挂上你的then
:
var getData = postService.post('my_service_url', {id: 'test'});
getData.then(function(result) {
$scope.data = result;
console.log(data);
});
答案 1 :(得分:0)
尝试使用angularjs的$ q模块:
https://docs.angularjs.org/api/ng/service/$q
您的服务代码可能如下所示:
.service('postService', function($http, $q, apiUrl) {
return {
post: function(uri, params) {
var deferred = $q.defer();
$http.post(apiUrl + uri, params).then(function(items) {
deferred.resolve(items.data);
}, function() {
// error case
deferred.reject();
});
return deferred.promise;
}
};
})