javascript - 在 Controller 中使用来自 ngResource 的 get 值

标签 javascript angularjs ngresource

我正在努力使用从我的 Controller 中的“获取”中获得的值。

这是我 Controller 中的代码

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 的 View 时,它只显示用户的正确值。所以它在 Controller 中的 loadUser() 之后是未知的,但它在我看来是。

我想首先“获取”用户,然后将其用于 onInit() 中的进一步逻辑。如何正确检索用户以便我可以进一步使用它并在 onInit() 中调用它的值?

最佳答案

您必须等到 loadUser() 执行完成才能获取用户的值。您可以使用这样返回的 promise 并对其进行任何计算。

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;
    };

关于javascript - 在 Controller 中使用来自 ngResource 的 get 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804415/

相关文章:

javascript - AngularJS 中带有 Promise 的多个资源调用

angularjs - ngResource 将 POST 参数附加到 url

带有方法的AngularJS自定义模型对象?

javascript - Android文件上传 - 文件名错误, native 浏览器

javascript - SandcaSTLe - 死链接、 "access is denied"和其他问题

angularjs - Angular + Node + Express + Passport + oauth2orize 独特的 CORS 问题

javascript - AngularJS $q.all() 结果为空

javascript - 想要删除行 onclick

javascript - less.js 延迟工作表加载

javascript - AngularJS 菜单在 MEAN.js 中是公共(public)的