在控制器中使用带有Ngresource的GET的值



我正在努力使用从控制器中获得的'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();
            })
    }

最新更新