我正在构建我的第一个AngularJS应用程序并且陷入这个(应该是直截了当的)问题。
我有一项服务" vehicleService"完成所有$ http功能。然后检查操作是否成功,然后创建一个包含状态代码的新对象,以及预期的返回对象或错误列表;它正确执行。
vehicleService.getVehicles = function() {
return $http.get(url)
.then(function(result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
return returnObject;
})
.catch(function(result) {
$log.log('NOWAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.errorList = result.data.modelState;
return returnObject;
});
我的问题是当我尝试将returnObject返回给控制器时,我得到$ http promise对象而不是returnObject。
由于返回$ http.get(url)这一行,我猜不到它,但不应该首先执行然后,然后传递returnObject?
编辑:忘记更改标题
答案 0 :(得分:0)
$ http是异步函数,您可能需要
vehicleService.getVehicles = function(callback) { $http.get(url)
.then(function(result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
callback(returnObject);
})
.catch(function(result) {
$log.log('NOWAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.errorList = result.data.modelState;
callback(returnObject);
});}
或者你应该使用$ scope.returnObject
答案 1 :(得分:-1)
用您的函数替换函数中的代码:
$http({ method: 'GET', url: 'url' }).
success(function (result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
return returnObject;
}).
error(function (result) {
$log.log('NOWAY');
});