Angular ui路由器无法解析$resource结果

Angular ui-router cannot resolve $resource results

本文关键字:resource 结果 ui 路由器 Angular      更新时间:2023-12-09

在我的一个UI路由器状态中,我有以下链接'/users',它指向一个显示用户列表的页面。下面是我写的代码,通过使用$resource调用来解析用户列表,然而,当页面加载时,数据似乎没有得到解析:

.state('users', {
                    url: '/users',
                    templateUrl: '/assets/angularApp/partials/users.html',
                    controller: 'UserListCtrl as vm',
                    resolve: {
                        users: function ($resource) {
                            return $resource('http://localhost:8080/api/users').query().$promise.then(function(data) {
                                return data;
                            });
                        }
                    }

                })

UserListCtrl中,我有以下内容将解析的用户分配给vm.users,以便用户可以显示在部分页面上:

function UserListCtrl($log, users) {
        var vm = this;
        vm.users = users;
}

然而,该页面只显示了几行空行,没有填写任何数据。所以我认为resolve在我的url /users上工作不正常,有人能发现哪里可能有问题吗?感谢

将其更改为:

users: function ($resource) {
    return $resource('http://localhost:8080/api/users').query().$promise;
}

因为通过这种方式,您将返回promise,并使用then(…),您将在中解析promise,只返回数据,因此它不会将数据传递给控制器,因为它在控制器加载后返回数据。

使用$q服务将帮助您

var userVal = $resource('http://localhost:8080/api/users').query()
retrun $q.resolve(userVal.$promise).then(function(r){ return r;});

在你的控制器里,你可以去

vm.users = users