首页 文章

以角度解决承诺

提问于
浏览
1

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

控制器代码 -

function getUserInfo(){

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

          $scope.userInfo = userdetails;
    });
}

memberService代码 -

function getDetails(){

    return promise;

}

这里,在呈现html时不分配Scope变量 . 它在以后的点上被赋予了承诺值,这打破了UI .

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

谢谢,Nikitha

1 回答

  • 0

    你能解决你到控制器的路由中的值吗?

    像这样的东西:

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

    在你的控制器中:

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

相关问题