我正在努力使用从控制器中获得的'get'的值。
这是我的控制器中的代码
vm.user;
function onInit(){
loadUser(vm.queryParams.id[0]);
console.log(vm.user);
}
function loadUser(UserId) {
var defer = $q.defer();
User.get({ id: userId }).$promise.then(function (user) {
vm.user = user;
defer.resolve();
});
return defer.promise;
};
当我在onInit()
中打印vm.user
时,它是未定义的。当我查看vm.user的视图时,它只会向我显示用户的正确值。因此,在控制器中的loadUser()
之后是不知道的,但在我看来。
我想首先"获取"用户,然后将其用于onInit()
中的进一步逻辑。如何正确检索用户,以便我可以进一步使用它并在onInit()
中调用其值?
您必须等到loadUser()
的执行完成,以便获得用户的值。
vm.user;
function onInit(){
var promise=loadUser(vm.queryParams.id[0]);
promise.then(function(response){
console.log(response);
});
}
function loadUser(UserId) {
var defer = $q.defer();
User.get({ id: userId }).$promise.then(function (user) {
vm.user = user;
defer.resolve(vm.user);
});
return defer.promise;
};
立即在控制器的开头调用您的init功能,并将加载程序函数转换为服务,因为它是一个GET操作。您的服务将返回可以设置的用户。
(在控制器的顶部声明(:
init();
function init(){
loadUserService.loadUser(UserId)
.then(function (user) {
vm.user = user;
defer.resolve();
})
}