javascript - 如何在 promise 响应后为 ngTableParams 使用数据 - Angular

标签 javascript angularjs json

我为 Controller 实现了这段代码

.controller('tableCtrl', function($scope, $filter, $sce, ngTableParams, tableListUser) {
        var data = [];
        tableListUser.getAll()
        .then(function(data) {
            console.log("THEN DATA : ", data);
            $scope.data = data;
        });
        data = $scope.data;
        console.log("DATA : ", data);

        // Full Params Sort, Filter, Edit
        this.tableFull = new ngTableParams({
            page: 1,            // show first page
            count: 10,          // count per page
            sorting: {
                name: 'asc'     // initial sorting
            }
        }, {
            total: data.length, // length of data
            getData: function ($defer, params) {
                console.log("Data tableFull :", $scope.data);
                // use build-in angular filter
                var orderedData = params.sorting() ? $filter('orderBy')($scope.data, params.orderBy()) : $scope.data;

                orderedData = params.filter() ? $filter('filter')(orderedData, params.filter()) : orderedData;

                orderedData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());

                
                console.log(orderedData.length);
                params.total(data.length); // set total for recalc pagination
                $defer.resolve(orderedData);

            }
        })
}

这是服务

.service('tableListUser', function($http, SessionService, AccessLevels) {
        return {
            getAll: function() {
                console.log('Service tableListUser');
                var token = SessionService.get('token');
                console.log(token);
                $http.defaults.headers.common.Authorization = 'Bearer ' + token;
                var url = 'http://api-ec.local/users';
                var promise = $http.get(url);
                return promise.then(function(result) {
                    console.log("RESULT : ", result);
                    return result.data.data;
                });
            }
        };
    })

我在这里评论了很多帖子:asynchronously populating an AngularJS ngTable with json data

但是我不能使用 var data 中的数据,因为它是 Undefined。 promise 的响应很好,并获得了应用程序期望的数据,因为当我在 tableListUser.getAll().then 中记录数据时,它很好。我使用 $socope.data 传递数据并在 ngTableParams 中使用它的方式有问题吗?这阻碍了我很多。

在此先感谢您的帮助。

最佳答案

我猜你没有使用 controllerAs 语法。如果是这种情况,只需将 this.tableFull 更改为 $scope.tableFull 就可以解决问题。您的代码与我执行此操作的旧应用程序几乎相同,这是唯一不特定于域的区别。

关于javascript - 如何在 promise 响应后为 ngTableParams 使用数据 - Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922552/

相关文章:

javascript - Ng-if - 尝试获取我的 Firebase 的数据

json - 使用jq将JSON {"k1":"v1","k2":"v2"}转换为CSV : v1, v2

java - 从 Java 对象到 JSON 对象的自定义转换

json - 如何将这个嵌套的 JSON 解码为 go 对象?

javascript - jQuery 已提交与正在提交

javascript - 在构造函数中获取数据

javascript - 多态性nodeJS

javascript - AngularJS 代码不工作

javascript - 具有 HTML 格式的 AngularJS 动态行生成

javascript - 键盘事件在 Chrome 53 中不起作用