在控制器中使用来自 ngResource 的 get 值
Using a value from a get with ngResource in the controller
我正在努力使用从我的控制器中的 '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()
之后不知道,但它在我看来。
我想先 'get' 用户,然后将其用于 onInit()
中的进一步逻辑。如何正确检索用户以便我可以进一步使用它并在 onInit()
?
中调用它的值
您必须等到 loadUser()
的执行完成,以便获取 user.You 的值可以使用这样返回的承诺并对其进行任何计算。
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 函数,并将 loadUser 函数转换为服务,因为它是一个 get 操作。您的服务将 return 您随后可以设置的用户。
(在控制器顶部声明):
init();
function init(){
loadUserService.loadUser(UserId)
.then(function (user) {
vm.user = user;
defer.resolve();
})
}
我正在努力使用从我的控制器中的 '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()
之后不知道,但它在我看来。
我想先 'get' 用户,然后将其用于 onInit()
中的进一步逻辑。如何正确检索用户以便我可以进一步使用它并在 onInit()
?
您必须等到 loadUser()
的执行完成,以便获取 user.You 的值可以使用这样返回的承诺并对其进行任何计算。
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 函数,并将 loadUser 函数转换为服务,因为它是一个 get 操作。您的服务将 return 您随后可以设置的用户。
(在控制器顶部声明):
init();
function init(){
loadUserService.loadUser(UserId)
.then(function (user) {
vm.user = user;
defer.resolve();
})
}