Najlepszy sposób na reprezentowanie siatki lub tabeli w AngularJS z Bootstrap 3? [zamknięte]

Tworzę aplikację z AngularJS i Bootstrap 3. Chcę pokazać tabelę / siatkę z tysiącami wierszy. Jaka jest najlepsza dostępna kontrola dla AngularJS & Bootstrap z funkcjami takimi jak sortowanie, wyszukiwanie, paginacja itp.

Author: Vasyl, 2014-01-27

11 answers

Po wypróbowaniu ngGrid, ngTable, trNgGrid i Smart Table doszedłem do wniosku, że Smart Table jest zdecydowanie najlepszą implementacją AngularJS-wise i Bootstrap-wise. Jest zbudowany dokładnie tak samo, jak byś zbudował własny, naiwny stół przy użyciu standardowego kąta. Ponadto dodali kilka dyrektyw, które pomagają w sortowaniu, filtrowaniu itp. Ich podejście również sprawia, że dość łatwo rozszerzyć się. Fakt, że używają zwykłych znaczników html dla tabel i standard ng-repeat dla wierszy i standard bootstrap dla formatowania czyni to moim wyraźnym zwycięzcą.

Ich kod JS zależy od kąta, a Twój html może zależeć od bootstrap, jeśli chcesz. Kod JS ma łącznie 4 kb i możesz nawet łatwo wybrać rzeczy, jeśli chcesz osiągnąć jeszcze mniejszy rozmiar.

Gdzie inne siatki da ci klaustrofobię w różnych obszarach, Smart Table po prostu czuje się otwarty i do punktu.

Jeśli mocno polegasz na przykład przy edycji inline i innych zaawansowanych funkcjach możesz szybciej rozpocząć pracę dzięki ngTable. Możesz jednak łatwo dodawać takie funkcje w Smart Table.

Nie przegap Smart Table !!!

Nie mam żadnego związku z Smart Table, poza używaniem go osobiście.

 220
Author: Ricky Helgesson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-08 22:33:48

Miałem ten sam wymóg i rozwiązałem go za pomocą tych komponentów:

Komponent tabeli ng-grid może wyświetlać setki wierszy w przewijalnej siatce. Jeśli masz do czynienia z tysiącami wpisów jesteś lepiej off używając paginatora ng-grid. Dokumentacja ng-grid jest doskonała i zawiera wiele przykładów. Sortowanie i wyszukiwanie są obsługiwane nawet w połączeniu z paginacją.

Oto zrzut ekranu z bieżącego projektu, aby dać Ci wrażenie, jak wygląda:

Tutaj wpisz opis obrazka

[aktualizacja lipiec 2017]

Po kilku latach produkcji ng-grid nadal mogę stwierdzić, że nie ma większych problemów z tym komponentem. Tak, dużo drobnych błędów, ale No Show stoppers(przynajmniej w moich przypadkach użycia). Powiedziawszy to, zdecydowanie radzę nie używać tego komponentu, jeśli rozpoczynasz projekt od zera. Ten komponent jest dobrym rozwiązaniem tylko wtedy, gdy jesteś związany z AngularJS 1.0.x . Jeśli możesz wybrać wersję kątową, wybierz nowszy komponent. Lista elementów tabeli dla Angular 4 została skompilowana przez Sama Deeringa w ten blog .

 113
Author: Lars Behnke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-28 09:10:03

Z "tysiącami wierszy" najlepszym rozwiązaniem byłoby oczywiście wykonanie stronicowania po stronie serwera. Kiedy jakiś czas temu przyjrzałem się różnym opcjom tabeli/siatki AngularJs, były trzy wyraźne ulubione:

Wszystkie trzy są dobre, ale realizowane inaczej. Który wybierzesz prawdopodobnie będzie bardziej oparty na osobistych preferencjach niż cokolwiek innego.

Ng-grid {[5] } jest prawdopodobnie najbardziej znany ze względu na jego skojarzenie z angular-ui, ale osobiście wolę ng-table, bardzo podoba mi się ich implementacja i sposób jej używania, a mają świetną dokumentację i przykłady dostępne i aktywnie są ulepszane.

 86
Author: Beyers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-17 16:20:24

Bogata w funkcje siatka kątowa to ta:

TrNgGrid

Niektóre z jego cech:

    Został zbudowany z myślą o prostocie.
  • używa zwykłych tabel HTML, pozwalając przeglądarkom na optymalizację renderowania.
  • w pełni deklaratywny, zachowując oddzielenie obaw, pozwalając w ten sposób na pełne opisanie go w HTML, bez mieszania kontrolerów.
  • jest w pełni konfigurowalny za pomocą szablonów i dwukierunkowej granicy danych atrybuty.
  • łatwy w utrzymaniu, mając kod napisany maszynopisem.
  • ma bardzo krótką listę zależności: AngularJs i Bootstrap CSS, z opcjonalnymi motywami Bootswatch.

trNgGrid

Enjoy. Tak, jestem autorem. Mam dość tych wszystkich kanciastych siatek.

 77
Author: MoonStom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 10:36:33

Dla osób czytających ten post: zrób sobie przysługę i trzymaj się z dala od ng-grid. Jest pełen błędów (naprawdę..prawie każda część Lib jest w jakiś sposób zepsuta), deweloperzy porzucili wsparcie 2.0.x branch, aby pracować w 3.0, który jest bardzo daleko od bycia gotowym. Naprawianie problemów samemu nie jest łatwym zadaniem, kod ng-grid nie jest mały i nie jest prosty, chyba że masz dużo czasu i głęboką wiedzę na temat angular i js w ogóle, to będzie trudne zadanie.

Dolna linia: jest pełna błędów, a ostatnia stabilna wersja została porzucona.

Github jest pełen PR - ów, ale są one ignorowane. A jeśli zgłosisz błąd w 2.oddział x, zamknięte.

Wiem, że jest open source proyect i narzekania mogą brzmieć trochę nie na miejscu, ale z perspektywy dewelopera szukającego biblioteki, to moje zdanie. Spędziłem wiele godzin pracując z ng-grid w dużym proyeccie i headcaches are never ending

 39
Author: agusluc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 15:38:43

TrNgGrid jak na razie działa świetnie. Oto powody, dla których wolę go od ng-grid i przeniósł się do tego komponentu

  • Sprawia, że elementy tabeli, dzięki czemu może być bootswatched i korzystać z całej mocy bootstrap .css (ng-grid używa jQuery UI themes).

  • Proste, dobrze udokumentowane opcje siatki.

  • Rozmiar serwera działa stronicowanie

 15
Author: Matthew McKinley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-11 21:12:37

Na końcu tej odpowiedzi na pytanie, jak myśleć w Angular, jeśli masz tło jQuery, top post od Josha Davida Millera podsumowuje:

Nawet nie używaj jQuery. Nawet tego nie włączaj. To cię powstrzyma. A kiedy przychodzi do problemu, który wydaje ci się, że wiesz, jak rozwiązać w jQuery, zanim sięgniesz po $, zastanów się, jak zrób to w granicach AngularJS. Jeśli nie wiesz, zapytaj! 19 times out of 20, najlepszym sposobem, aby to zrobić nie trzeba jQuery i spróbować aby rozwiązać go z jQuery skutkuje więcej pracy dla Ciebie.

Teraz, jeśli chcesz siatkę z mnóstwem funkcji i opcji dostosowywania, jQuery DataTables jest jednym z najlepszych. Siatki kątowe, które widziałem nie zbliżaj się do tego, co jQuery DataTables może zrobić.

Jednak, jQuery DataTables nie integruje się dobrze z AngularJS. (Były różne wysiłki, ale żaden nie oferuje bezproblemowe integracja.)

Może to pozostawia osobie dwie opcje.

Pierwszy polega na zastosowaniu czystej siatki kątowej, która nie jest tak bogata w funkcje jak dane. Zgadzam się z @Moonstom, że mam dość innych kanciastych siatek na zewnątrz i trNgGrid ładnie wygląda.

Drugą opcją jest stwierdzenie: jest to jeden z tych rzadkich 1 z 20 przypadków gdzie powinieneś użyć jQuery i przejść z wtyczką jQuery DataTables, ponieważ wysiłki na rzecz ponownego wynalezienia koła z czystymi siatkami kątowymi mają daje mniej wytrzymałe koło niż DataTables.

Byłoby miło, gdyby było inaczej, ale po prostu nie widziałem ekosystem Angular wymyślić tak silną siatkę jak jQuery DataTables, i nie jest tak, że dobra siatka danych jest przyjemna w aplikacji internetowej: dobra siatka jest niezbędna.
 10
Author: mg1075,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:51

Możesz użyć klas bootstrap 3 i zbudować tabelę używając dyrektywy ng-repeat

Przykład:

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>

Przykład na żywo: http://jsfiddle.net/choroshin/5YDJW/5/

Update:

Lub zawsze możesz spróbować popularnego ng-grid , ng-grid jest dobry do sortowania, wyszukiwania, grupowania itp., ale nie testowałem go jeszcze na dużych danych.

 9
Author: Alex Choroshin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-28 16:56:10

Adapt-Strap . Oto skrzypce .

Jest niezwykle lekki i ma dynamiczne wysokości rzędów.

<ad-table-lite table-name="carsForSale"
               column-definition="carsTableColumnDefinition"
               local-data-source="models.carsForSale"
               page-sizes="[7, 20]">
</ad-table-lite>
 8
Author: kashyaphp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-06 17:21:05

Jak wspomniano w innych odpowiedziach: dla tabeli z wyszukiwaniem, select i paginacji "ng-grid" jest najlepszą opcją. Kilka rzeczy, na które się natknąłem, wspomnę, które mogą być przydatne podczas implementacji:

Aby ustawić env:

  1. Http://www.json-generator.com / do generowania danych JSON. To całkiem fajne narzędzie, aby uzyskać przykładowy zestaw danych, aby przyspieszyć rozwój.

  2. Możesz sprawdzić ten plunker dla swojej realizacji. Mam zmodyfikowano o: Wyszukiwanie, zaznaczanie i stronicowanie http://plnkr.co/edit/gJPBz0pVxGzKlI8MGOit?p=preview

Możesz sprawdzić ten samouczek o Smart table, daje wszystkie potrzebne informacje: http://lorenzofox3.github.io/smart-table-website/

Następne pytanie brzmi:bootstrap 3 : To nie do końca, ale te szablony wyglądają dobrze. - Możesz po prostu użyć https://github.com/angular-ui/bootstrap/tree/master/template wszystkie szablony są dobrze napisane.

Mogę kontynuować o tym, jak przekonwertować bootstrap 3 na angularjs, ale jego już wspomniano w następujących linkach:

Pamiętaj, że jeśli chodzi o smart-table, musisz sprawdzić, czy jest gotowy do wersji kątowej

 4
Author: neoahead,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:30

Siatka Kendo jest dobra tak samo jak Wijmo. Wiem, że Kendo ma wiązania kątowe dla ich źródła danych i myślę, że Wijmo ma wtyczkę kątową. Ani za darmo.

 3
Author: Trevor de Koekkoek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 04:45:03