如何等待来自资源的实际数据

时间:2017-10-16 10:53:54

标签: angularjs angular-ui-router angular-resource

所以我有一个使用ui-router的角度应用程序。我决定使用该资源来获取数据。

app.config.js

resolve: {
                data: function ($resource) {

                    var dataObj= $resource('/api/area/162');

                    return dataObj.get({},function(result){
                        return result;
                    });
                }
            }

我的控制器内部称为组件

...

                var $ctrl = this;
                    console.log("data", $ctrl);
...

现在我知道angular指定空值以在等待数据时返回一个对象。反过来导致组件的执行,我最终在组件控制器中的空数据。现在如何在执行控制器

之前强制角度等待来自服务器的数据

当我尝试

            resolve: {
                data: function ( $http) {

                    return $http.get('/api/area/162').then(function(response) {
                       return  response.data;
                    });

                }
            }

一切正常,在获取数据之前未加载视图,我可以在控制器中看到数据。如何使用资源获得相同的结果?

我也尝试过:

app.config.js

            resolve: {
                data: function (Data, $stateParams, $http, $resource) {

                    var object = $resource('/api/area/162');

                    return object.get().$promise.then(function(result){
                        return result;
                    });
               }
            }

这只会返回错误:

stateService.ts:526 TypeError: Cannot read property 'then' of undefined
at data (app.config.js:81)
at resolvable.ts:120
at angular.js:17051
at m.$digest (angular.js:18233)
at angular.js:18462
at e (angular.js:6362)
at angular.js:6642

我已经阅读了StackOverflow上关于类似问题的大部分问题以及一些文章,包括

https://www.jvandemo.com/how-to-resolve-angularjs-resources-with-ui-router/

1 个答案:

答案 0 :(得分:0)

问题是我使用了错误版本的angular-resource.js:/

所以,这确实有用......

app.config.js

        resolve: {
            data: function (Data, $stateParams, $http, $resource) {

                var object = $resource('/api/area/162');

                return object.get().$promise.then(function(result){
                    return result;
                });
           }
        }

问题解决了:P