如何返回`$ resource`承诺响应?

时间:2016-01-06 05:45:44

标签: angularjs angular-resource

我需要多个区域的用户详细信息。我试图使用通用函数返回细节。但我得到的结果为undefined。据我所知,我需要使用$differed来获得重新获得。但我对目前的情况一无所知。

有人在这帮助我吗?

这是我的功能:

$scope.currentUserInfo = function () {

        var userDetails;

        server.getProfile.get().$promise.then(function ( response ) {

            if( response.Message.toUpperCase().indexOf('SUCCESS') != -1) {

                return  userDetails = response;

            }

            return "Not able to get the user details this time"

        })

        return userDetails;

    }

$scope.currentUser =  $scope.currentUserInfo();
console.log( $scope.currentUser ) //undefined.



var function1 = function () {

    $scope.currentUserInfo(); //once user details available do further

     $scope.age = $scope.currentUser.age;

}

var function2 = function () {

    $scope.currentUserInfo(); //once user details available do further

    $scope.name = $scope.currentUser.name;

}

1 个答案:

答案 0 :(得分:1)

server.getProfile.get()是一个异步调用。 即使return userDetails;调用尚未完成,$scope.currentUserInfo函数中的server.getProfile.get()行也会执行。 试试这个:

$scope.currentUserInfo = function () {

    server.getProfile.get().$promise.then(function ( response ) {

        if( response.Message.toUpperCase().indexOf('SUCCESS') != -1) {

            $scope.currentUser = response;

        }

        $scope.message =  "Not able to get the user details this time";


    })

}
在ajax调用完成后,将填充

$scope.currentUser。我假设您在html绑定中使用$scope.currentUser,因此当值更改时,它将自动反映在您的视图中