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);

        }
    });

フィルタリングされたデータが空に戻るかどうか、および1ページ目にいないかどうかを確認するために、上記のチェックで問題を回避しました。 私が見落としているこれを管理するための組み込みの方法はありますか?

最も参考になるコメント

過去に@msallatiの回避策も使用しました。 かなりうまく機能しますが、少し面倒なので、この修正をngTableに追加すると便利です...削除操作中のチェックは1つだけなので、ライブラリ全体のパフォーマンスに影響はないと思います。

全てのコメント6件

+1。 上記と同じ問題があります。

回避策として、現在の行がそのページの最後の行であり、最初のページではないかどうかを確認できます。

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

それは私が過去にしたことです。

ngTableがすぐにデータセットを監視することはないと思います
(これにより、潜在的なパフォーマンスの問題が発生します)。 だから私は提案します
これを解決策として使用します。

9:46の火、2017年2月7日には、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に追加すると便利です...削除操作中のチェックは1つだけなので、ライブラリ全体のパフォーマンスに影響はないと思います。

問題は、ngTableが削除操作を「認識」していないことです。
ngTableはデータセットの変更を監視する必要があります-これは
パフォーマンスの問題

10時04分AMの火、2017年2月7日には、ヤクブPowierza [email protected]
書きました:

また、 @ msallatihttps ://github.com/msallatiの回避策を使用しました
過去。 かなりうまく機能しますが、この修正をngTableに追加すると便利です
少し面倒なので…削除時のチェックは1回だけです
オペレーションなので、ライブラリ全体のパフォーマンスに影響はないと思います。


コメントしたのでこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/esvit/ng-table/issues/720#issuecomment-277953666 、またはミュート
スレッド
https://github.com/notifications/unsubscribe-auth/AA2HPo3igPmhmaPxxusbi-rJ1YreOLGqks5raEGigaJpZM4GLPEq

説明ありがとうございます! 今、私は何が起こっているのかを完全に理解することができます:)

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

penchiang picture penchiang  ·  5コメント

ivyfae picture ivyfae  ·  12コメント

ulise picture ulise  ·  5コメント

muhlegg picture muhlegg  ·  29コメント

faceleg picture faceleg  ·  11コメント