我使用的是Angular.js,ui-router,UserService Factory和控制器。
我遇到的问题是当我的resolv在路由中返回时,在激活控制器时它没有完全解析。
这是我的UserService:
app.factory('UserService',["$rootScope","$q","$http","$window",function($rootScope,$q,$http,$window) {
var accountinfo;
return {
getCurrentAccount: function() {
$http.get("/api/v1/accounts").then(function(data){
accountinfo=data;
return data;
})
}
这是我路线中的州:
.state("in",{
url:"/in",
templateUrl: "/templates/in.html",
authenticate: true,
controller: "inController",
resolve: {
servicename: 'UserService',
accountinfo: function(servicename) {
return servicename.getCurrentAccount();
}
}
})
这一个星期。我做了很多阅读和研究。我一直无法解决这个问题。没有双关语!
答案 0 :(得分:2)
您需要向路径的resolve函数返回一个承诺,以等待承诺得到解决。您的getCurrentAccount()
应该返回$http
请求的结果:
getCurrentAccount: function() {
return $http.get("/api/v1/accounts").then(function(result){
accountinfo = result.data;
return result.data;
});
}