ngtable 分页和排序

ngtable paging and sorting

我在使用 ngtable 时遇到以下问题。当我发出 http get 请求并获取数据时,ngtable 一切正常,但我无法订购。但是如果我发出一个新的 http get 请求(没有重新加载页面)。然后向我显示 table 和新数据,正确显示新请求的数据量,但不显示分页,也不显示 select 每页行数的选项。我尝试重新加载 table 参数,但没有结果。

我的代码:

    $scope.httpget = function(uri)
    {
        $scope.data=[];
        $http.get(uri).then(
            function(result){
              $scope.data = result.data;
              $scope.tableParams = new ngTableParams({
                        page: 1,
                        count: 10,
                        filter: {
                            message: ''
                        },
                        sorting: {
                            timestamp: 'asc'
                        }
                    },
                    {
                        getData: function($defer, params) {
                            var orderedData = params.sorting() ?
                                $filter('orderBy')($scope.data, params.orderBy()) :
                                $scope.data;

                            params.total(orderedData.length);
                            $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                        }
                    });
            }
        );
    }
<table ng-table='tableParams'>
    <tr ng-repeat='d in $data | filter:search'>
         <td data-title="'Collected Timestamp'" sortable="'timestamp'"> {{d.timestamp}} </td>
         <td data-title="'Tag Name'", sortable="'tag_name'"> {{d.tag_name}} </td>
         <td data-title="'Value'", sortable="'value'"> {{d.value}} </td>
    <tr>
</table> 

第一次 http get 后结果正常

第二次 http get 后结果不好(无分页)

你用过吗

$scope.tableParams.total(data.length)

$scope.tableParams.reload();

在任何时候?你 'do another get request' 究竟如何?如果没有帮助,请尝试上传您的代码

这也发生在我身上。我诊断的问题是 ng-table 实例的重复初始化。 您需要将 ng-table 的初始化放入单独的函数中。(在我的例子中,它是 init()

在你的代码中,它应该是这样的:

    $scope.data = [];

    init();
    function init() {
        $scope.tableParams = new ngTableParams({
            page: 1,
            count: 10,
            filter: {
                message: ''
            },
            sorting: {
                timestamp: 'asc'
            }
        },{
            getData: function ($defer, params) {
                var orderedData = params.sorting() ?
                    $filter('orderBy')($scope.data, params.orderBy()) :
                    $scope.data;

                params.total(orderedData.length);
                $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
            }
       });
    };
$scope.httpget = function (uri) {
    $http.get(uri).then(function (result) {
        $scope.data = result.data;
        $scope.tableParams.total($scope.data.length);
        $scope.tableParams.reload();
    }
  );
}

希望对您有所帮助。