我的控制器中有一个函数,它调用服务并返回一个promise 当promise被解决时,我需要使用服务返回的成功数据来分配范围变量。 但是范围变量没有被分配,因为这是异步调用并且在跳转到下一行代码之前没有解决 有没有办法可以先解决承诺,我可以执行下一行代码以避免错误
控制器代码 -
function getUserInfo(){
memberSerice.getDetails(userId).then(function(userdetails){
$scope.userInfo = userdetails;
});
}
memberService代码 -
function getDetails(){
return promise;
}
此处,在呈现html时未分配Scope变量。它会在稍后的时间点被赋予承诺值,这会破坏用户界面。
那么我怎么能等待这个承诺得到解决,并在开始执行下一行代码之前分配范围变量?
谢谢, Nikitha
答案 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;
});