A melhor maneira de representar uma grade ou mesa em AngularJS com Bootstrap 3? [fechado]

Estou a criar um aplicativo com AngularJS e Bootstrap 3. Quero mostrar uma tabela / grelha com milhares de linhas. Qual é o melhor controle disponível para AngularJS & Bootstrap com recursos como ordenação, Pesquisa, paginação, etc.

Author: Vasyl, 2014-01-27

11 answers

Depois de experimentar ngGrid, ngTable, trNgGrid e Smart Table, cheguei à conclusão de que Smart Table é, de longe, a melhor implementação AngularJS-sábio e Bootstrap-sábio. É construído exatamente da mesma maneira que você construiria sua própria tabela, ingênua usando angular padrão. Além disso, eles adicionaram algumas diretivas que ajudam você a separar, filtrar, etc. A abordagem deles também torna muito simples estender-se. O fato de que eles usam o html regular as marcas para as tabelas e a ng-repeat padrão para as linhas e bootstrap padrão para a formatação torna este o meu vencedor claro.

O código JS deles depende do angular e o seu html pode depender do 'bootstrap' se quiser. O código JS é de 4 kb no total e você pode até facilmente escolher coisas de lá se você quiser alcançar uma pegada ainda menor.

Onde as outras redes te darão claustrofobia em diferentes áreas, a mesa inteligente parece aberta e directa.

Se dependeres fortemente na edição em linha e outros recursos avançados, você pode levantar-se e correr mais rápido com ngTable para instance No entanto, você é livre para adicionar tais recursos com bastante facilidade na tabela inteligente.

Não falhes Tabela Inteligente !!!

Não tenho qualquer relação com a mesa inteligente, excepto com o uso da conta própria.
 220
Author: Ricky Helgesson, 2014-09-08 22:33:48

Eu tinha o mesmo requisito e resolvi-o usando estes componentes:

O componente da tabela ng-grid é capaz de mostrar centenas de linhas numa grelha desenrolável. Se você tem que lidar com milhares de entradas você é é melhor usar o paginador da ng-grid. A documentação do GN-grid é excelente e contém muitos exemplos. A ordenação e a busca são suportadas mesmo em combinação com a paginação.

Aqui está uma imagem de um projecto actual para lhe dar uma ideia de como ele se parece:

enter image description here

[actualizar julho 2017]

Depois de ter a GN-grid em produção por alguns anos, ainda posso dizer que não há grandes problemas com este componente. Sim, bastante. bugs menores, mas não mostrar rolhas (pelo menos em Meus casos de uso). Dito isto, eu aconselharia fortemente contra a utilização deste componente se você iniciar um projeto do zero. Este componente só é uma boa opção se estiver ligado a AngularJS 1. 0.x . Se você estiver livre para escolher a versão Angular, vá para um componente mais recente. Uma lista de componentes da tabela para Angular 4 foi compilada por Sam Deering em Este blog .
 113
Author: Lars Behnke, 2017-07-28 09:10:03

Com "milhares de linhas" a tua melhor aposta seria, obviamente, fazer a chamada do lado do servidor. Quando eu olhei para as diferentes opções da tabela/grade AngularJs um tempo atrás havia três favoritos claros:

Os três são bons, mas implementados de forma diferente. O que você escolher provavelmente será mais baseado na preferência pessoal do que qualquer outra coisa.

GN-grid is provavelmente o mais conhecido devido à sua associação com o angular-ui, mas eu pessoalmente prefiro ng-table , eu realmente gosto da sua implementação e como você a usa, e eles têm grande documentação e exemplos disponíveis e ativamente sendo melhorados.

 86
Author: Beyers, 2014-09-17 16:20:24

Uma grelha Angular rica em funcionalidades é esta:

TrNgGrid

Algumas das suas características:
  • foi construído com simplicidade em mente.
  • está a usar tabelas HTML simples, permitindo que os navegadores optimizem a renderização.
  • totalmente declarativo, preservando a separação de preocupações, permitindo-lhe assim descrevê-lo completamente em HTML, sem confundir os seus controladores.
  • é totalmente personalizável através de modelos e de dados bidirecionais atributo.
  • Fácil de manter, tendo o código escrito em Dactilografia.
  • tem uma lista muito curta de dependências: AngularJs e CSS de Bootstrap, com temas opcionais de Bootswatch.

trNgGrid

Divirtam-se. Sim, sou o autor. Fartei-me das grelhas angulares.
 77
Author: MoonStom, 2014-08-15 10:36:33
Para quem ler este post, faça um favor a si mesmo e afaste-se da ng-grid. Está cheio de bugs (realmente..quase todas as partes da lib são quebradas de alguma forma), o devs abandonou o Suporte de 2.0.x branch para trabalhar em 3.0, que está muito longe de estar pronto. Corrigir os problemas por si mesmo não é uma tarefa fácil, o código ng-grid não é pequeno e não é simples, a menos que você tenha muito tempo e um profundo conhecimento de angular e js em geral, vai ser um difícil tarefa.

conclusão: está cheio de bugs, e a última versão estável foi abandonada.

O github está cheio de PRs, mas estão a ser ignorados. E se reportares um erro no 2.x branch, está fechado.

Eu sei que é um proyect de código aberto e as queixas podem soar um pouco fora do lugar, mas da perspectiva de um desenvolvedor à procura de uma biblioteca, essa é a minha opinião. Passei muitas horas a trabalhar com a GN-grid num grande proyect e a headcaches are never ending

 39
Author: agusluc, 2014-08-20 15:38:43
O TrNgGrid está a trabalhar muito bem. Aqui estão as razões que eu prefiro a ng-grid e movido para este componente
  • Ele faz elementos de mesa para que possa ser inicializado e usar todo o poder do bootstrap .css (GN-grid usa temas jQuery UI).

  • Opções simples e bem documentadas da grelha.

  • O tamanho do servidor funciona

 15
Author: Matthew McKinley, 2014-05-11 21:12:37

No final desta resposta à questão de como pensar em Angular se você tem um fundo jQuery, o posto superior de Josh David Miller resume:

Nem sequer uses jQuery. Nem sequer a inclua. Vai retrair-te. E quando você chega a um problema que você acha que sabe como resolver em jQuery já, antes de chegar ao {[[0]}, tente pensar em como fá-lo dentro dos limites dos AngularJS. Se não sabes, pergunta! 19 tempos fora 20, a melhor maneira de fazê-lo não precisa de jQuery e tentar para resolvê-lo com jQuery resulta em mais trabalho para você.
Agora se você quiser uma grade com toneladas de recursos e opções para personalização, O Jquery DataTables é um dos melhores. As grelhas angulares que vi não te aproximes do que os DataTables jQuery podem fazer.

No entanto , Os DataTables jQuery não se integram bem com AngularJS. (Tem havido vários esforços, mas nenhum oferecer sem emenda integracao.)

Talvez isso deixe uma pessoa com duas opções.

O primeiro é ir com uma grade Angular pura que não é tão rica como dados. Eu concordo com @Moonstom sobre se cansar com as outras redes angulares para fora ali, e o trNgGrid fica bem.

A segunda opção é dizer: esta é uma daquelas raras 1 em 20 casos onde você deve usar jQuery e ir com o plugin jQuery DataTables, porque os esforços para reinventar a roda com as grades angulares puras tem rendeu uma roda menos robusta do que DataTables.

Seria bom se fosse de outra forma, mas eu não tinha visto o ecossistema Angular tem uma grelha tão forte como os DataTables jQuery., e não é como se uma boa grade de dados é um bom-para-ter em um aplicativo web: uma boa rede é essencial.
 10
Author: mg1075, 2017-05-23 12:34:51

Pode usar as classes bootstrap 3 e construir uma tabela usando a Directiva ng-repeat

Exemplo:

angular.module('App', []);

function ctrl($scope) {
    $scope.items = [
        ['A', 'B', 'C'],
        ['item1', 'item2', 'item3'],
        ['item4', 'item5', 'item6']
    ];
}
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="App">
  <div ng-controller="ctrl">
    
    
    <table class="table table-bordered">
      <thead>
        <tr>
          <th ng-repeat="itemA in items[0]">{{itemA}}</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td ng-repeat="itemB in items[1]">{{itemB}}</td>
        </tr>
        <tr>
          <td ng-repeat="itemC in items[2]">{{itemC}}</td>
        </tr>
      </tbody>
    </table>
    
    
  </div>
</div>

Exemplo vivo: http://jsfiddle.net/choroshin/5YDJW/5/

Actualizar:

Ou você pode sempre tentar o popular ng-grid , ng-grid é bom para a ordenação, pesquisa, agrupamento, etc, mas eu ainda não testei em grande escala.

 9
Author: Alex Choroshin, 2014-11-28 16:56:10

Adapt-Strap. Aqui está o violino.

É extremamente leve e tem alturas dinâmicas.
<ad-table-lite table-name="carsForSale"
               column-definition="carsTableColumnDefinition"
               local-data-source="models.carsForSale"
               page-sizes="[7, 20]">
</ad-table-lite>
 8
Author: kashyaphp, 2014-09-06 17:21:05

Como mencionado em outras respostas: para uma tabela com pesquisa, selecionar e paginação "ng-grid" são as melhores opções. Algumas coisas que encontrei vou mencionar que podem ser úteis durante a implementação:

Para definir env:

  1. Http://www.json-generator.com/ para gerar dados JSON. É uma ferramenta muito legal para obter o seu conjunto de dados de amostra para tornar o desenvolvimento mais rápido.

  2. Você pode verificar este plunker para sua implementação. Eu tenho modificado para incluir: pesquisa, seleção e paginação http://plnkr.co/edit/gJPBz0pVxGzKlI8MGOit?p=preview

Você pode verificar este tutorial sobre a tabela inteligente, dá toda a informação de que necessita: http://lorenzofox3.github.io/smart-table-website/

Então a próxima pergunta é:bootstrap 3 : Não é exactamente, mas estes modelos parecem bons. - Pode usar apenas https://github.com/angular-ui/bootstrap/tree/master/template todos os modelos estão bem. escrito.

Eu posso continuar sobre como converter bootstrap 3 para angularjs, mas já mencionado nos seguintes links:

Por favor, note que, em relação à smart-table, Tem de verificar se está pronta para a sua versão angular

 4
Author: neoahead, 2017-05-23 12:18:30

Kendo grid is good as well as Wijmo. Eu sei que o Kendo vem com ligações angulares para o seu datasource e eu acho que o Wijmo tem um plugin Angular. Nem são livres.

 3
Author: Trevor de Koekkoek, 2014-04-17 04:45:03