Ng-table: Excluindo linha de ngTable quando for o último item da página

Criado em 8 out. 2015  ·  6Comentários  ·  Fonte: esvit/ng-table

Quando o último item é removido de uma tabela na página 2 ou superior, a navegação da paginação desaparece.

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

        }
    });

Eu contornei com a verificação acima para ver se os dados filtrados voltam vazios e se não estamos na página um. Existe uma maneira embutida de gerenciar isso que estou negligenciando?

Comentários muito úteis

Eu também usei a solução alternativa @msallati no passado. Funciona muito bem, mas seria bom adicionar essa correção ao ngTable, pois é um pouco chato ... É apenas uma verificação durante a operação de exclusão, então acho que não será um impacto no desempenho da biblioteca geral.

Todos 6 comentários

+1. Eu tenho o mesmo problema acima.

Como alternativa, você pode verificar se a linha atual é a última da página e não é a primeira página

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

Isso é o que fiz no passado.

Eu não acho que o ngTable vai monitorar o conjunto de dados tão cedo
(isso introduziria problemas de desempenho em potencial). Então eu sugeriria
indo com isso como uma solução.

Na terça-feira, 7 de fevereiro de 2017 às 9h46, M.Msallati [email protected] escreveu:

Como solução alternativa, você pode verificar se a linha atual é a última dessa
página e não é a primeira página

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

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/esvit/ng-table/issues/720#issuecomment-277949435 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/AA2HPnt6g1_cHsg4NhwX9VKNbwHuzASsks5raD2HgaJpZM4GLPEq
.

Eu também usei a solução alternativa @msallati no passado. Funciona muito bem, mas seria bom adicionar essa correção ao ngTable, pois é um pouco chato ... É apenas uma verificação durante a operação de exclusão, então acho que não será um impacto no desempenho da biblioteca geral.

O problema é que o ngTable não "sabe" sobre a operação de exclusão.
ngTable precisaria observar o conjunto de dados para alterações - isso seria um
problema de desempenho

Na terça, 7 de fevereiro de 2017 às 10h04, Jakub Powierza [email protected]
escreveu:

Também usei @msallati https://github.com/msallati solução alternativa no
passado. Funciona muito bem, mas seria bom adicionar essa correção ao ngTable
pois é um pouco chato ... É apenas uma verificação durante a exclusão
operação, então eu acho que não será um impacto no desempenho da biblioteca em geral.

-
Você está recebendo isto porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/esvit/ng-table/issues/720#issuecomment-277953666 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/AA2HPo3igPmhmaPxxusbi-rJ1YreOLGqks5raEGigaJpZM4GLPEq
.

Obrigado pela sua explicação! Agora posso entender perfeitamente o que está acontecendo :)

Esta página foi útil?
0 / 5 - 0 avaliações