问题描述
我想从控制器中获取$ 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未定义
实现此目的的方法是什么?
1楼
Jamiec
3
已采纳
2015-08-07 12:35:38
您需要返回 $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);
});
2楼
FireGnome
0
2015-08-07 12:39:21
尝试一下angularjs的$ 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;
}
};
})