Eu tenho um conjunto de dados de cerca de 1000 itens na memória e estou tentando criar um pager para esse conjunto de dados, mas não tenho certeza de como fazer isso.
Estou usando uma função de filtro personalizada para filtrar os resultados, e isso funciona bem, mas de alguma forma eu preciso obter o número de páginas.
Alguma pista?
angularjs
pagination
Micael
fonte
fonte
Respostas:
Bootstrap de interface de usuário angular - diretiva de paginação
Confira UI Bootstrap 's directiva paginação . Acabei usando-o em vez do que é postado aqui, pois possui recursos suficientes para o meu uso atual e possui uma especificação de teste completa para acompanhá-lo.
Visão
Controlador
Eu fiz um plunker de trabalho para referência.
Versão herdada:
Visão
Controlador
Eu fiz um plunker de trabalho para referência.
fonte
pagination
elemento.Eu recentemente implementei a paginação para o site Built with Angular. Você pode consultar a fonte: https://github.com/angular/builtwith.angularjs.org
Eu evitaria usar um filtro para separar as páginas. Você deve dividir os itens em páginas dentro do controlador.
fonte
Use your downvotes whenever you encounter an egregiously sloppy, no-effort-expended post, or an answer that is clearly and perhaps dangerously incorrect.
Eu tive que implementar a paginação algumas vezes com o Angular, e sempre foi um pouco doloroso para algo que eu achava que poderia ser simplificado. Eu usei algumas das idéias apresentadas aqui e em outros lugares para criar um módulo de paginação que torna a paginação tão simples quanto:
É isso aí. Possui os seguintes recursos:
items
aos links de paginação.ng-repeat
, para que você possa usar qualquer expressão que possa ser usada validamente emng-repeat
, incluindo filtragem, pedido etc.pagination-controls
diretiva não precisa saber nada sobre o contexto em que apaginate
diretiva é chamada.Demo: http://plnkr.co/edit/Wtkv71LIqUR4OhzhgpqL?p=preview
Para quem procura uma solução "plug and play", acho que você achará isso útil.
Código
O código está disponível aqui no GitHub e inclui um bom conjunto de testes:
https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination
Se você estiver interessado, também escrevi um pequeno artigo com um pouco mais de informações sobre o design do módulo: http://www.michaelbromley.co.uk/blog/108/paginate-almost-anything-in-angularjs/
fonte
Acabei de criar um JSFiddle que mostra paginação + pesquisa + ordem em cada coluna usando o código btford: http://jsfiddle.net/SAWsA/11/
fonte
new_sorting_order
deveria sernewSortingOrder
. Corrija isso, adicione o@scope.search();
, e você verá as coisas classificar conforme o esperado, e os ícones de classificação também serão atualizados. (Execute o violino com o console de depuração do navegador aberto (no chrome, F12, guia console) e é óbvio).Eu atualizei Scotty.NET de plunkr http://plnkr.co/edit/FUeWwDu0XzO51lyLAEIA?p=preview para que ele usa versões mais recentes do angular, angular-ui, e de bootstrap.
Controlador
Componente de interface do usuário de inicialização
fonte
Esta é uma solução javascript pura que envolvi como um serviço Angular para implementar a lógica de paginação, como nos resultados de pesquisa do Google.
Demonstração de trabalho no CodePen em http://codepen.io/cornflourblue/pen/KVeaQL/
Detalhes e explicações nesta postagem do blog
fonte
Eu extraí os bits relevantes aqui. Este é um pager tabular 'sem frescura', portanto, a classificação ou a filtragem não estão incluídas. Sinta-se à vontade para alterar / adicionar conforme necessário:
fonte
Abaixo solução bastante simples.
Aqui está o exemplo jsfiddle
fonte
O adaptador angular do jQuery Mobile possui um filtro de paginação no qual você pode basear-se.
Aqui está um violino de demonstração que o usa (adicione mais de 5 itens e ele será paginado): http://jsfiddle.net/tigbro/Du2DY/
Aqui está a fonte: https://github.com/tigbro/jquery-mobile-angular-adapter/blob/master/src/main/webapp/utils/paging.js
fonte
Para quem acha difícil criar um paginador para uma tabela, eu posto isso. Então, na sua opinião:
Nos seus angularJs:
fonte
Eu uso essa biblioteca de paginação de terceiros e funciona bem. Ele pode criar fontes de dados locais / remotas e é muito configurável.
https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination
fonte
Desde o Angular 1.4, o
limitTo
filtro também aceita um segundo argumento opcionalbegin
Dos documentos :
Portanto, você não precisa criar uma nova diretiva . Esse argumento pode ser usado para definir o deslocamento da paginação
fonte
Você pode fazer isso facilmente usando a diretiva de interface do usuário do Bootstrap.
Esta resposta é uma modificação da resposta dada pelo @ Scotty.NET. Alterei o código porque a
<pagination>
diretiva está obsoleta agora.O código a seguir gera a paginação:
Para torná-lo funcional, use isso no seu controlador:
Consulte isso para obter mais opções de paginação: Diretiva de paginação da interface do usuário do Bootstrap
fonte
paginação repetida por ng
fonte
As mensagens anteriores recomendavam basicamente como criar uma paginação por si mesmo. Se você é como eu e prefere uma diretiva pronta, acabei de encontrar uma excelente chamada ngTable . Ele suporta classificação, filtragem e paginação.
É uma solução muito limpa, tudo que você precisa em sua opinião:
E no controlador:
Link para o GitHub: https://github.com/esvit/ng-table/
fonte
Paginação angular
é uma escolha maravilhosa
fonte
Pergunta antiga, mas como acho que minha abordagem é um pouco diferente e menos complexa, compartilharei isso e espero que alguém além de mim ache útil.
O que eu achei uma solução fácil e pequena para paginação é combinar uma diretiva com um filtro que usa as mesmas variáveis de escopo.
Para implementar isso, adicione o filtro na matriz e adicione o diretório assim
p_Size e p_Step são variáveis de escopo que podem ser personalizadas no escopo; caso contrário, o valor padrão de p_Size é 5 e p_Step é 1.
Quando uma etapa é alterada na paginação, o p_Step é atualizado e aciona uma nova filtragem pelo filtro cust_pagination. O filtro cust_pagination divide a matriz de acordo com o valor p_Step como abaixo e retorna apenas os registros ativos selecionados na seção paginação
DEMO Veja a solução completa neste plunker
fonte
Aqui está o meu exemplo. Botão selecionado no meio da lista Controlador. config >>>
Lógica para paginação:
e minha visão sobre boottap
É útil
fonte
Eu gostaria de poder comentar, mas vou ter que deixar isso aqui:
A resposta do Scotty.NET e o refazer do user2176745 para versões posteriores são ótimos, mas ambos perdem algo que minha versão do AngularJS (v1.3.15) interrompe:
i não está definido em $ scope.makeTodos.
Como tal, a substituição por esta função o corrige nas versões angulares mais recentes.
fonte
fonte
Gostaria de adicionar minha solução que funciona com
ngRepeat
filtros e que você usa com ela sem usar uma$watch
ou uma matriz fatiada.Os resultados do seu filtro serão paginados!
No HTML, certifique-se de aplicar seus filtros
ngRepeat
antes do filtro de paginação.fonte