2014-12-02 32 views
20

Od jakiegoś czasu szukam drzewa Grid, które dobrze współpracuje z AngularJS i nie miałem dużo szczęścia.Najlepsze opcje dla siatki drzewa AngularJS

Moje wymagania to:

  1. Łatwy w użyciu
  2. Wygląda dobrze
  3. Obsługuje przeciągnij i upuść
  4. Może obsłużyć dużą ilość danych 10000+ (tj paginacja/leniwy zwój 10000 wierszy)
  5. Może wyświetlać dane hierarchiczne w tabeli (np. Kolumny/sortowanie)
  6. Bezpłatne/tanie

Projekty, które przychodzą w pobliżu:

  • Sencha Tree Grid
    • nie wydaje się grać ładnie z angularjs
    • Podobno moduł Buffered-Tree może pomóc poradzić 1000S lub wiersze
  • angular-ui-tree
    • Blisko, ale nie obsługuje funkcji jak kolumny tabeli, po wyjęciu z pudełka
    • nie obsługuje dużych ilości danych, ale dyrektywa dirPaginate Michaela Bromley może naprawić
  • tree-grid-directive
    • Wygląda dobrze (Pasuje bootstrap)
    • Has kolumny
    • Ale nie łatwo pozwalają na stronicowania/leniwy załadunku

Ok ... więc biorąc pod uwagę, że inni ludzie muszą rozwiązać tego wcześniej, moje pytanie brzmi:

Jaki jest najlepszy sposób, aby podejść do tego?

Czy istnieje już projekt obejmujący wszystkie podstawy? A może istnieje prosty sposób dostosować jeden z nich się leniwie ładowane drzewo siatki ...

Odpowiedz

5

IgniteUI Tree Grid (nie mylić z brzydkim Hierarchical Grid)

Chociaż nie jest doskonały, wydaje się to rozsądną opcją.

Plusy

  • Wygląda na tyle miły
  • posiada kilka wtyczek do sortowania, filtrowania, przywoławcze, przypinanie itp
  • Lazy loading dzieci mogą być zintegrowane poprzez słuchanie poszerzyć wydarzeń (i ewentualnie z InfragisticsLoader)

Wady

  • Nie out-of-the-box integracji angularjs
  • Nie "Nieskończona Scroll" out-of-the-box

Jest również bardzo prosty w obsłudze:

$("#treegrid").igTreeGrid({ 
    width: "100%", 
    dataSource: data, 
    primaryKey: "employeeID", 
    columns: [ 
     { headerText: "Employee ID", key: "employeeID", dataType: "number" }, 
     { headerText: "Name", key: "name", dataType: "string" } 
    ] 
}); 

Stworzyłem próbkę jsFiddle tutaj: http://jsfiddle.net/immersion/qggbs0s6/

+1

W rzeczywistości istnieje dyrektywa angleular-igniteui dla TreeGrid (http://igniteui.github.io/igniteui-angular/samples/igTreeGrid.html), która również wydaje się być dobrą robotą. Nie miałem jeszcze okazji spróbować uzyskać wywołania stronicowania/nieskończonego scrollowania ... –

+1

Po kilku godzinach walki z Infragistrics IgniteUI, jestem gotowy przyznać się do porażki. Twój jsFiddle jest świetny, ale popada w tę samą sztuczkę, której używają własne dema ... dane JSON są zakodowane na stałe. Teraz spróbuj użyć prawdziwego kontrolera Angular, w którym ładujesz dane z usługi internetowej. Nie próbowałem sterowania drzewem, ale Infragistrics przyznaje, że hierarchiczne siatki "nie wspierają 1 lub 2 sposobu wiązania" !! Jest szokująco niedokończony i słabo udokumentowany. –

5

Znam jej dwumiesięczne pytanie, ale potrzebowałem tego samego i właśnie natknąłem się na tę siatkę Adapt-Strap.

Użyłem go kilka małych przykładów i działało dobrze do tej pory, wydaje się bardzo łatwy w użyciu, ma drag-drop/pagination/lazy loading.

Myślę, że warto spróbować, a fyi: Nie mam żadnego związku z deweloperami.

+1

Tak wygląda dobrze ... ale nie wygląda na to, że komponent ** Przeglądarki drzewnej ** ma wszystkie inne fajne funkcje, tj. Przeciąganie/upuszczanie/paginowanie/leniwe ładowanie. Mogę się mylić chociaż ... –

+1

Hej, Ma leniwy ładunek, zobacz tabelę AJAX. Ma ono podział na paginację i przeciąganie - patrz tabela Lite (z górnego menu) Jedyne, co mi się nie podoba w przypadku siatki z paskiem adaptacyjnym, to że używa tabel do renderowania danych, a ja naprawdę nienawidzę tabel. – bolovan

+1

@bolovan Jestem zdezorientowany. Czy mówisz, że te komponenty można włączyć do ** Przeglądarki drzew **? Jeśli nie, oznacza to, że ** Przeglądarka drzew ** nie ma przeciągania/paginacji/leniwego ładowania. – gravidThoughts

3

Istnieje native TreeGrid directive zbudowany w całości przy użyciu AngularJS. Jest częścią IntegralUI Studio for Web, zbudowanego przez Lidor Systems.

Jest łatwy w obsłudze i umożliwia obsługę dużych zbiorów danych, bez stronicowania.

+0

To jest świetna biblioteka. Ładnie też wygląda! ..Oczywiście nie jest to darmowe, ale będę musiał pamiętać o tym. –