Tworzę aplikację za pomocą AngularJS i Bootstrap 3. Chcę pokazać tabelę / siatkę z tysiącami wierszy. Jaka jest najlepsza dostępna kontrola dla AngularJS i Bootstrap z funkcjami takimi jak Sortowanie, Wyszukiwanie, Paginacja itp.
angularjs
twitter-bootstrap-3
ng-grid
angular-ui-grid
smart-table
Rahat Khanna
źródło
źródło
Odpowiedzi:
Po wypróbowaniu ngGrid, ngTable, trNgGrid i Smart Table doszedłem do wniosku, że Smart Table jest zdecydowanie najlepszą implementacją pod względem AngularJS i Bootstrap. Jest zbudowany dokładnie tak samo, jak przy tworzeniu własnego, naiwnego stołu przy użyciu standardowego kąta. Ponadto dodali kilka dyrektyw, które pomagają w sortowaniu, filtrowaniu itp. Ich podejście ułatwia także samodzielne rozszerzanie się. Fakt, że używają zwykłych tagów HTML dla tabel i standardowego powtórzenia ng dla wierszy i standardowego bootstrapu do formatowania, czyni mnie 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 w sumie 4 kb i możesz nawet łatwo wybierać stamtąd, jeśli chcesz osiągnąć jeszcze mniejszy rozmiar.
Tam, gdzie inne siatki dają klaustrofobię w różnych obszarach, Smart Table wydaje się otwarty i do rzeczy.
Jeśli polegasz w dużej mierze na edycji bezpośredniej i innych zaawansowanych funkcjach, możesz na przykład szybciej zacząć działać z ngTable. Jednak możesz swobodnie dodawać takie funkcje w Smart Table.
Nie przegap Smart Table !!!
Nie mam żadnego związku ze Smart Table, poza tym, że sam go używam.
źródło
Miałem ten sam wymóg i rozwiązałem go za pomocą następujących elementów:
Komponent tabeli ng-grid może wyświetlać setki wierszy na przewijanej siatce. Jeśli masz do czynienia z tysiącami wpisów, lepiej skorzystać z 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 pokazać Ci, jak to wygląda:
[AKTUALIZACJA lipiec 2017 r.]
Po kilku latach pracy w sieci ng-grid nadal mogę stwierdzić, że nie ma większych problemów z tym komponentem. Tak, wiele drobnych błędów, ale nie ma ograniczeń pokazowych (przynajmniej w moich przypadkach użycia). Powiedziawszy to, zdecydowanie odradzam korzystanie z tego komponentu, jeśli zaczniesz projekt od zera. Składnik ten jest dobrym rozwiązaniem tylko wtedy, gdy jesteś zobowiązany do angularjs 1.0.x . Jeśli możesz wybrać wersję Angular, wybierz nowszy komponent. Lista składników tabeli dla Angulara 4 została opracowana przez Sama Deeringa na tym blogu .
źródło
W przypadku „tysięcy wierszy” najlepszym rozwiązaniem byłoby oczywiście stronicowanie po stronie serwera. Kiedy jakiś czas temu sprawdzałem różne opcje tabeli / siatki AngularJs, zauważyłem trzy wyraźne faworytów:
Wszystkie trzy są dobre, ale zaimplementowane inaczej. Który wybierzesz będzie prawdopodobnie bardziej oparty na osobistych preferencjach niż cokolwiek innego.
ng-grid jest prawdopodobnie najbardziej znany ze względu na jego powiązanie z angular-ui, ale ja osobiście wolę ng-table , bardzo podoba mi się ich implementacja i sposób korzystania z niego, a oni mają świetną dokumentację i przykłady i są aktywnie ulepszane.
źródło
table
. Mogę po prostu zastosować klasę tabeli ładowania początkowego i to działa ...Bogata w funkcje siatka kątowa to:
trNgGrid
Niektóre z jego funkcji:
Cieszyć się. Tak, jestem autorem. Mam już dość wszystkich sieci Angular.
źródło
ngGrid
. Nie mogłem się zorientować, której wersji powinienem użyć, bo chyba zacząłem szukać przejścia między wersjami 2.x do 3.x, a nawet nie byłem w stanie zmusić stołu do pracy. Potem przeniosłem się dongTable
jakiego rodzaju pracy. Nie mogłem uzyskać poprawnego sortowania lub stronicowania, ale to ze względu na sposób, w jaki ładowałem dane$http
. Potem zobaczyłem totrNgGrid
i do cholery ... tak łatwo się uruchomić. Żałuję, że nie mogę tutaj napisać więcej, ale sugeruję, aby każdy spróbował najpierw!Dla każdego, kto czyta 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ęść biblioteki jest jakoś zepsuta), deweloperzy porzucili obsługę gałęzi 2.0.x, aby pracować w wersji 3.0, która jest bardzo daleko od gotowości. Samodzielne rozwiązywanie problemów nie jest łatwym zadaniem, kod ng-grid nie jest mały i nie jest prosty, chyba że masz dużo czasu i głęboką znajomość kątów i ogólnie js, będzie to trudne zadanie.
Dolna linia: jest pełna błędów, a ostatnia stabilna wersja została porzucona.
Github jest pełen PR, ale są one ignorowane. A jeśli zgłosisz błąd w gałęzi 2.x, zostanie on zamknięty.
Wiem, że to proyect typu open source, a skargi mogą wydawać się trochę nie na miejscu, ale z perspektywy dewelopera szukającego biblioteki, to moja opinia. Spędziłem wiele godzin pracując z ng-grid w dużym stopniu, a bóle głowy nigdy się nie kończą
źródło
Jak dotąd TrNgGrid działa świetnie. Oto powody, dla których wolę go od ng-grid i przeniósł się do tego komponentu
Tworzy elementy tabeli, dzięki czemu można go uruchamiać i wykorzystywać całą moc bootstrap .css (ng-grid używa motywów interfejsu użytkownika jQuery).
Proste, dobrze udokumentowane opcje siatki.
Działa stronicowanie rozmiaru serwera
źródło
Na końcu tej odpowiedzi na pytanie, jak myśleć w Angular, jeśli masz doświadczenie w jQuery, w górnym poście Josh David Miller podsumowuje:
Teraz, jeśli chcesz siatkę z mnóstwem funkcji i opcji dostosowywania, jQuery DataTables jest jednym z najlepszych. Siatki tylko kątowe, które widziałem, nie zbliżają się do tego, co może zrobić jTuery DataTables.
Jednak jQuery DataTables nie integruje się dobrze z AngularJS. (Podejmowano różne wysiłki, ale żadne nie zapewnia płynnej integracji).
Być może pozostawia to osobę z dwiema opcjami.
Pierwszym jest przejście na czystą siatkę kątową, która nie jest tak bogata w funkcje jak DataTables. Zgadzam się z @Moonstom na temat tego, że mam dość innych siatek Angular, a trNgGrid wygląda ładnie.
Drugą opcją jest powiedzenie: jest to jeden z tych rzadkich 1 na 20 przypadków, w których powinieneś użyć jQuery i skorzystać z wtyczki jQuery DataTables, ponieważ wysiłki zmierzające do ponownego wynalezienia koła z czystymi kątowymi siatkami przyniosły mniej wytrzymałe koło niż DataTables.
Byłoby miło, gdyby było inaczej, ale po prostu nie widziałem, aby ekosystem Angular miał tak silną siatkę jak jQuery DataTables, i nie jest tak, że dobra siatka danych jest przyjemna w aplikacji internetowej : dobra siatka jest niezbędna.
źródło
Możesz użyć klas bootstrap 3 i zbudować tabelę używając dyrektywy ng-repeat
Przykład:
przykład na żywo: http://jsfiddle.net/choroshin/5YDJW/5/
Aktualizacja:
lub zawsze możesz wypróbować popularny ng-grid , ng-grid jest dobry do sortowania, wyszukiwania, grupowania itp., ale nie testowałem go jeszcze na dużą skalę.
źródło
Pasek adaptacyjny . Oto skrzypce .
Jest niezwykle lekki i ma dynamiczne wysokości rzędów.
źródło
Jak wspomniano w innych odpowiedziach: W przypadku tabeli z wyszukiwaniem najlepszym wyborem jest wybranie i podział na strony „ ng-grid ”. Kilka rzeczy, na które natknąłem się wspomnę, które mogą być przydatne podczas wdrażania:
Aby ustawić env:
http://www.json-generator.com/ do generowania danych JSON. Jest to całkiem fajne narzędzie do pobierania przykładowego zestawu danych, aby przyspieszyć programowanie.
Możesz sprawdzić ten plunker dla swojej implementacji. Zmodyfikowałem, aby uwzględnić: wyszukiwanie, wybieranie i paginację http://plnkr.co/edit/gJPBz0pVxGzKlI8MGOit?p=preview
Możesz sprawdzić ten samouczek na temat inteligentnego stołu, Daje wszystkie potrzebne informacje: http://lorenzofox3.github.io/smart-table-website/
Następne pytanie brzmi
bootstrap 3
: nie do końca, ale 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ę przejść dalej, jak przekonwertować bootstrap 3 na angularjs, ale jest już wspomniany w następujących linkach:
pamiętaj, że jeśli chodzi o smart-table, musisz sprawdzić, czy jest on gotowy do wersji kątowej
źródło
Siatka Kendo jest dobra, podobnie jak Wijmo. Wiem, że Kendo ma powiązania Angular dla swojego źródła danych i myślę, że Wijmo ma wtyczkę Angular. Żadne z nich nie jest jednak darmowe.
źródło