以角度

时间:2015-05-18 20:43:29

标签: javascript angularjs angular-promise

我的控制器中有一个函数,它调用服务并返回一个promise 当promise被解决时,我需要使用服务返回的成功数据来分配范围变量。 但是范围变量没有被分配,因为这是异步调用并且在跳转到下一行代码之前没有解决 有没有办法可以先解决承诺,我可以执行下一行代码以避免错误

控制器代码 -

function getUserInfo(){

      memberSerice.getDetails(userId).then(function(userdetails){

          $scope.userInfo = userdetails;
    });
}

memberService代码 -

function getDetails(){

    return promise;

}

此处,在呈现html时未分配Scope变量。它会在稍后的时间点被赋予承诺值,这会破坏用户界面。

那么我怎么能等待这个承诺得到解决,并在开始执行下一行代码之前分配范围变量?

谢谢, Nikitha

1 个答案:

答案 0 :(得分:0)

您可以解决路由到控制器的值吗?

这样的事情:

$routeProvider
    .when("/:userId", {
        templateUrl: "myView.html",
        controller: "myController",
        resolve: {
            userDetails: function(myService){
                return myService.getDetails();
        }
    }
})

在你的控制器中:

app.controller("myController", function (userDetails) {
    $scope.userinfo = userDetails;
});