Ng-table: 当它是页面上的最后一项时,从 ngTable 中删除行

创建于 2015-10-08  ·  6评论  ·  资料来源: esvit/ng-table

当从第 2 页或以上的表格中删除最后一项时,分页导航将消失。

    $scope.tableParams = new ngTableParams({
        page: 1,            // show first page
        count: 10,           // count per page
        sorting: {
            firstName: 'asc'     // initial sorting
        }
    }, {
        total: 0,
        getData: function ($defer, params) {
            $scope.myData = angular.copy($scope.clients, []);
            var filteredData = params.filter() ?  $filter('filter')($scope.myData, params.filter()) : $scope.myData;
            var orderedData = params.sorting() ? $filter('orderBy')(filteredData, params.orderBy()) : filteredData;

            params.total(orderedData.length);
            var data = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());

            //EXTRA CHECK
            if (data.length === 0 && params.page() !== 1){
                params.page(params.page()-1);
                filteredData = params.filter() ?  $filter('filter')($scope.myData, params.filter()) : $scope.myData;
                orderedData = params.sorting() ? $filter('orderBy')(filteredData, params.orderBy()) : filteredData;
                params.total(orderedData.length);
                data = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
            }

            $defer.resolve(data);

        }
    });

我通过上面的检查解决了这个问题,看看过滤后的数据是否为空,以及我们是否不在第一页。 有没有内置的方法来管理我忽略的这个问题?

最有用的评论

我过去也使用过@msallati解决方法。 效果很好,但是将这个修复程序添加到 ngTable 会很好,因为它有点烦人......它只是删除操作期间的一次检查,所以我认为它不会对整个库的性能造成影响。

所有6条评论

+1。 我有和上面一样的问题。

作为一种解决方法,您可以检查当前行是否是该页面上的最后一行,而不是第一页

if ($scope.tableParams.data.length == 1 && vm.tableParams.page() != 1) {
$scope..tableParams.page(vm.tableParams.page() - 1);
}
$scope.tableParams.reload();

这就是我过去所做的。

我认为 ngTable 不会很快监控数据集
(这会引入潜在的性能问题)。 所以我建议
以此作为解决方案。

在 2017 年 2 月 7 日星期二上午 9:46,M.Msallati [email protected]写道:

作为一种解决方法,您可以检查是否当前行是该行的最后一行
页面,它不是第一页

if ($scope.tableParams.data.length == 1 && vm.tableParams.page() != 1) {
$scope..tableParams.page(vm.tableParams.page() - 1); }
$scope..tableParams.reload();


您收到此消息是因为您订阅了此线程。
直接回复本邮件,在GitHub上查看
https://github.com/esvit/ng-table/issues/720#issuecomment-277949435或静音
线程
https://github.com/notifications/unsubscribe-auth/AA2HPnt6g1_cHsg4NhwX9VKNbwHuzASsks5raD2HgaJpZM4GLPEq
.

我过去也使用过@msallati解决方法。 效果很好,但是将这个修复程序添加到 ngTable 会很好,因为它有点烦人......它只是删除操作期间的一次检查,所以我认为它不会对整个库的性能造成影响。

问题是 ngTable 不“知道”删除操作。
ngTable 需要观察数据集的变化——这将是一个
性能问题

2017 年 2 月 7 日,星期二,上午 10:04,Jakub Powierza通知@github.com
写道:

我还使用了@msallati https://github.com/msallati解决方法
过去的。 效果很好,但最好将此修复程序添加到 ngTable
因为它有点烦人......它只是删除过程中的一项检查
操作,所以我认为它不会对整个库的性能造成影响。


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/esvit/ng-table/issues/720#issuecomment-277953666或静音
线程
https://github.com/notifications/unsubscribe-auth/AA2HPo3igPmhmaPxxusbi-rJ1YreOLGqks5raEGigaJpZM4GLPEq
.

谢谢你的解释! 现在我可以完全理解发生了什么:)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

muhlegg picture muhlegg  ·  29评论

yujiayinshi picture yujiayinshi  ·  8评论

Ebolon picture Ebolon  ·  12评论

ghost picture ghost  ·  30评论

alienriquebm picture alienriquebm  ·  6评论