angjuar - 服务返回$ http promise而不是预期的对象

时间:2015-12-02 16:42:27

标签: angularjs

我正在构建我的第一个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?

编辑:忘记更改标题

2 个答案:

答案 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');
                });