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

Javascript Angular ui路由器无法解析$resource结果,javascript,angularjs,angular-ui-router,resolve,Javascript,Angularjs,Angular Ui Router,Resolve,在我的一个UI路由器状态中,我有以下链接'/users',它指向一个显示用户列表的页面。下面是我编写的代码,通过使用$resource调用解析用户列表,但是,在加载页面时,数据似乎没有解析: .state('users', { url: '/users', templateUrl: '/assets/angularApp/partials/users.html', contro

在我的一个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;
}

因为这样您就返回了承诺,并且通过使用then(…),您正在解析其中的承诺,并且只返回数据,因此它不会将其传递给控制器,因为它在控制器加载后返回它们。

使用
$q
服务将帮助您

var userVal = $resource('http://localhost:8080/api/users').query()
retrun $q.resolve(userVal.$promise).then(function(r){ return r;});
在你的控制器里面,你很好去

vm.users = users

您的响应是什么样子的?响应是一个Jasonif数组如果您检查范围vm.users有什么值?vm.users显示“未定义”您能在“返回数据”中放一个换行符吗解析并检查函数参数?解释你的答案为什么有效将有助于你的读者学习。当时我很忙,所以必须很快,但现在有关于我如何理解它的解释,以及为什么我说将其更改为该值的原因。但这是一个值得思考的好东西,谢谢:)这个问题现在讨论得太晚了,但在数据传递之前,我们该如何处理数据处理呢?例如,如果我想截获请求中的一个错误并返回一个默认值,而不是对延迟响应表示抱歉,那么您必须返回一个承诺,这样您就可以使用var someVar=$q.defer;并提出请求,然后在成功时执行someVar.resolve(数据);并回报一些承诺;对于用户,用户:函数($resource,$q){var someVar=$q.defer();$resource('{//对数据someVar.resolve(data);})执行操作);返回someVar.promise;}
$q
服务,帮助您异步运行函数,并在完成处理时使用它们的返回值(或异常)。