Найкращий спосіб представити сітку або таблицю в AngularJS за допомогою Bootstrap 3? [зачинено]


284

Я створюю додаток з AngularJS та Bootstrap 3. Хочу показати таблицю / сітку з тисячами рядків. Який найкращий доступний елемент управління для AngularJS & Bootstrap з такими функціями, як Сортування, Пошук, Пагинація тощо.


6
Ви, безумовно, повинні подивитися тут на ng-grid: angular-ui.github.io/ng-grid
mainguy

1
Чому б не використовувати UI Bootstrap? Нещодавно оновлено для використання Bootstrap 3: angular-ui.github.io/bootstrap
CallumVass

3
Ці тисячі рядків не всі повинні надсилатися клієнту. Тому чисте рішення JavaScript не вийде таким чудовим. Сервер повинен буде виконати пагинацію та / або пошук для вас.
флюп

Наступного разу спробуйте дати знімок таблиці ngTasty zizzamia.com/ng-tasty/directive/table , заснованої на завантажувальній таблиці css :)
zizzamia

3
Кутовий переходить у " ui-сітку ", в якій були б вбудовані функції таблиці. хороша альтернатива "таблицям даних jquery"
щоденник

Відповіді:


223

Спробувавши ngGrid, ngTable, trNgGrid та Smart Table , я прийшов до висновку, що Smart Table на сьогоднішній день є найкращою реалізацією AngularJS-mud і Bootstrap. Він побудований точно так само, як ви побудували власний, наївний стіл, використовуючи стандартні кутові. Крім того, вони додали кілька директив, які допомагають вам сортувати, фільтрувати і т. Д. Їхній підхід також дозволяє досить просто розширити себе. Те, що вони використовують звичайні теги html для таблиць і стандартне ng-повторення для рядків і стандартне завантажувальне для форматування, робить це моїм явним переможцем.

Їх JS-код залежить від кутового, а ваш HTML може залежати від завантажувальної програми, якщо ви хочете. Код JS загалом становить 4 кб, і ви навіть можете легко вибирати звідти речі, якщо хочете досягти ще меншої площі.

Там, де інші сітки дадуть вам клаустрофобію в різних областях, Smart Table просто відчуває себе відкритим і суттєвим.

Якщо ви сильно покладаєтесь на вбудоване редагування та інші вдосконалені функції, ви можете швидше вставати та працювати, наприклад, з ngTable. Однак ви можете безкоштовно додавати такі функції у Smart Table.

Не пропустіть Smart Table !!!

Я не маю жодного відношення до Smart Table, окрім того, як сам її використовувати.


12
Щойно знайшов невелику помилку в Smart Table, повідомив про це, і її виправили протягом кількох годин. Я вражений тим, що не всі користуються Smart Table - це просто набагато краще, ніж усі інші.
Рікі Гельгессон

1
Smart Table - це, безумовно, найкращий вибір для AngularJS. У ngGrid є більше функцій, але їх легко додати за допомогою розширення Smart Table.
Toilal

1
Тепер випущено ng-grid 3.0.7, і він добре працював для мене (зараз його називають ui-grid)
Kimball Robinson

1
Проблема полягає в тому, що пагинація на смарт-таблиці справді некрасива, немає першої сторінки, жодної останньої сторінки, нумерація ng-таблиці - це справді більше ергономіки. Те саме для сортування: на смарт-таблиці ми просто не знаємо, що можемо сортувати, перш ніж натиснути, це зовсім не ергономічно ...
amdev

1
Розумна таблиця для тривіальних сценаріїв лише для читання, ui-grid для всього іншого або просто ui-grid :)
RandomUs1r

116

У мене була така ж вимога, і я вирішив це за допомогою цих компонентів:

Компонент ng-grid таблиці здатний відображати сотні рядків у прокручуваній сітці. Якщо вам доведеться мати справу з тисячами записів, вам краще скористатися пагінатором ng-grid. Документація ng-grid є чудовою і містить безліч прикладів. Сортування та пошук підтримуються навіть у поєднанні з розбиттям сторінки.

Ось знімок екрана з поточного проекту, щоб створити враження: як це виглядає:

введіть тут опис зображення

[ОНОВЛЕННЯ липня 2017]

Отримавши ng-сітку у виробництві протягом декількох років, я все ще можу сказати, що з цим компонентом немає основних проблем. Так, безліч дрібних помилок, але немає показів (хоча б у моїх випадках використання). Сказавши це, я б настійно радив не використовувати цей компонент, якщо ви починаєте проект з нуля. Цей компонент є варіант хороший тільки якщо ви зобов'язані AngularJS 1.0.x . Якщо ви вільні вибирати кутову версію, перейдіть до нової складової. Список компонентів таблиці для Angular 4 склав Сем Дірінг у цьому блозі .


2
Wijmo також надає кутові директиви разом з такими функціями, як групування, сортування тощо. Ви також можете перевірити зразок Benchmark для ngGrid та Wijmo Grid за допомогою AngularJS: demos.componentone.com/wijmo/Angular/GridBenchmark/…
Ashish

@Lars Behnke Як застосувати стиль таблиці Bootstrap до ng-grid? Наскільки я подивився, у ng-grid не використовуються теги табличних tr, на які розраховується css Bootstrap.
elpddev

Реалізація компонента ng-grid не базується на Bootstrap. Тому я налаштував ng-grid.less, щоб максимально наблизитися до елементів графічного інтерфейсу завантажувального пристрою.
Ларс Бенке

1
Проект ng-grid переписується як UI Grid, який доступний на сайті ui-grid.info
mostar

2
Статистика 2016 року показує, що плагін ng-таблиць все ще користується попитом: GitHub: A. ng-grid: ~ 3500 виконує, ~ 800 випусків. B. розумний стіл: ~ 300 комісій, ~ 40 випусків. C. ng-таблиця: ~ 500 комісій, ~ 200 випусків. Тенденції Google просто підтверджують ту саму ідею, порівнюючи: "кутова розумна таблиця", "кутова сітка інтерфейсу", "кутова таблиця". google.com/trends/…
Антон Лихін

87

З "тисячами рядків" найкращою ставкою буде очевидно зробити підкачку на стороні сервера. Коли я заглянув у різні параметри таблиці / сітки AngularJs, назад було три чіткі фаворити:

Усі три хороші, але реалізовані по-різному. Те, що ви обираєте, ймовірно, буде базуватися більше на особистих уподобаннях, ніж будь-що інше.

ng-grid , мабуть, найвідоміший завдяки його асоціації з angular-ui, але мені особисто більше подобається ng-table , мені дуже подобається їх реалізація та те, як ви її використовуєте, і у них є чудова документація та приклади, які активно вдосконалюються.


7
Я був радий бачити, як хтось згадує про ng-table. Я також віддаю перевагу таблиці ng над ng-сіткою, оскільки вона має кращу стилізацію, особливо в режимі редагування.
Роб J

2
Стрибки на ngTable смузі тут. Я поїхав з ng-grid для проекту, і це було досить жахливо. Я пішов з ng-grid виключно через його асоціацію з angular-ui, і, здається, він трохи активніший на github. Я думаю, що я перейду на обмін на ngTable. Сподіваємось, це буде не надто складно.
Бретт

10
Привіт, новачок із кутовою екосистемою, я спочатку намагався перейти на ng-grid через "кращий" веб-сайт, але швидко зіткнувся зі стильовими проблемами через їх глибоко вкладеної структури div. Поки мені більше подобається ng-table, тому що він фактично використовує table. Я можу просто застосувати клас таблиці завантажувальних програм, і він працює ...
П'єр Генрі

1
Зауважте, що код та підхід смарт-таблиці радикально змінилися з його версією v1.0.0 (серпень 2014 р.), Тому коментарі, зроблені до цієї дати, вже не актуальні
laurent

4
Таблиця здебільшого занепала, оскільки її підтримує одна людина в Україні, і там було багато інших питань. ng-grid переписується як ui-grid для версії 3.0, але він не готовий до виробництва. Тому зараз, як правило, не вдалий час вибору або переключення кутових реалізацій таблиці. Smart-Table також підтримує більш-менш одна людина. Наразі ми використовуємо ng-таблицю, але ми плануємо перейти до ui-grid у міру дозрівання.
Splaktar

77

Кутовою сіткою, багатою функціями, є ця:

trNgGrid

Деякі його особливості:

  • Будувався з простотою на увазі.
  • Використовує звичайні таблиці HTML, що дозволяє браузерам оптимізувати візуалізацію.
  • Повністю декларативні, зберігаючи розділення проблем, дозволяючи вам повністю описати це в HTML, не псуючи ваших контролерів.
  • Повністю налаштовується за допомогою шаблонів та двосторонніх атрибутів, пов'язаних із даними.
  • Легкий в обслуговуванні, маючи код написаний у TypeScript.
  • Має дуже короткий список залежностей: AngularJs та Bootstrap CSS, з додатковими темами Bootswatch.

trNgGrid

Насолоджуйтесь. Так, я автор. Мені набридли всі кутові сітки там.


5
Цьому потрібно ще трохи визнання. Я почав з ngGrid. Я не міг зрозуміти, яку версію я мав би використовувати, оскільки, мабуть, я почав шукати між їх переходом 2.x на 3.x, і навіть не зміг заставити таблицю працювати. Потім я перейшов до того, до ngTableякого виду працював. Я не міг змусити сортування чи підкачки працювати належним чином, але це моє, через те, як я завантажував дані $http. Тоді я побачив це trNgGridі святе лайно ... так легко встати і бігти. Хотілося б тут написати більше, але я пропоную всім спробувати спершу!
Ронні

2
Я повністю погоджуюся з @Ronnie. Цьому слід приділяти більше уваги. Після цілого дня "боротьби" з ng-grid / ui-grid, щоб зробити щось трохи складніше, я спробував trNgGrid і попрацював над першою спробою.
Джонні Еверсон

4
це добре виглядає, хоча не можна знайти найважливіші елементи, такі як фіксований заголовок, зміни змінних стовпців, перетягувані стовпці тощо
iLemming

це завантажувач важкої залежності? Я хотів би, щоб моя сітка використовувала спеціальний css. можливо?
Jasdeep Singh

Для цього потрібно більше визнання. Я був настільки близький, що йшов з ng-grid, поки не зрозумів, що навіть не використовує HTML-таблиці.
ryanwinchester

39

Для всіх, хто читає цю публікацію: зробіть собі прихильність і тримайтеся подалі від ng-grid. Повна помилок (насправді .. майже вся частина лібла так чи інакше зламана), розробники відмовилися від підтримки відділення 2.0.x, щоб працювати в 3.0, що дуже далеко не готове. Виправити проблеми самостійно - справа непроста, код ng-grid не малий і не простий, якщо ви не маєте багато часу та глибоких знань про angular та js в цілому, це буде важким завданням.

Підсумок: повна помилок, і остання стабільна версія була залишена.

Гитуб переповнений піарами, але їх ігнорують. І якщо ви повідомлите про помилку у гілці 2.x, вона закриється.

Я знаю, що проєкт з відкритим кодом, і скарги можуть здатися трохи поза місцем, але з точки зору розробника, який шукає бібліотеку, це моя думка. Я багато годин працював з нг-сіткою у великому проекті, і головних уборів ніколи не закінчується


Чи можете ви розповісти нам кілька прикладів цих помилок / сценаріїв, які викликали головні болі? Мені це цікаво, тому що, вибираючи один з добре відомих варіантів (ng-grid, trNgGrid, ng-table, SmartTable), я тільки починаю з ng-grid і після прочитання вашого допису та перегляду 10 оновлених матеріалів я просто злякався!
спорт

1
Ну, деякі з них виправлені, я вважаю, вони об'єдналися, як 20 запитів на тягу, які сиділи там місяцями. Проблеми у мене були? багато з них були причиною того, що вони використовували діви замість столу для сітки. Крім того, події, які викриваються в сітці, є баггі, які доставляють мені багато проблем, тому що я реалізував нескінченну прокрутку, як поведінку, подія прокрутки вистрілювалась випадковим чином у деяких ситуаціях, які не повинні. Автоматична ширина стовпців взагалі не працює.
agusluc

Зрештою, це залежатиме від того, як ви хочете використовувати сітку, та рівня налаштування, необхідного у вашому проекті. Перевірте github, прочитайте відкриті випуски, складіть демо-версію, яка охоплює всі ваші випадки використання та подивіться, як вона працює. Але пам’ятайте, 2.x відділення відділення було кинуто, тож у майбутньому у вас буде нульова підтримка.
agusluc

15

TrNgGrid поки чудово працює. Ось причини, які я віддаю перевагу тому, що він ng-grid і перейшов до цього компонента

  • Це робить елементи таблиці, щоб можна було переглядати черевики та використовувати всю потужність bootstrap .css (ng-grid використовує теми jQuery UI).

  • Прості, добре задокументовані варіанти сітки.

  • Підказка розміру сервера працює


10

Наприкінці цієї відповіді на питання, як думати в Angular, якщо у вас є jQuery, верхній пост Джоша Девіда Міллера підсумовує:

Навіть не використовуйте jQuery. Навіть не включайте його. Це стримує вас. І коли ви стикаєтеся з проблемою, яку, на вашу думку, ви знаєте, як вирішити в jQuery, перш ніж дотягнутись до цього $, спробуйте подумати, як це зробити в межах AngularJS. Якщо ви не знаєте, запитайте! 19 разів з 20, найкращий спосіб зробити це не потребує jQuery і спробувати вирішити це за допомогою jQuery результатів для вас більше роботи.

Тепер, якщо ви хочете сітку з безліччю функцій та варіантів налаштування, jQuery DataTables - один із найкращих. Сітки, які я бачив лише для кутових, не наближаються до того, що можуть робити jQuery DataTables.

Однак , jQuery DataTables недостатньо добре інтегрується з AngularJS. (Були здійснені різні зусилля, але жодна не пропонує безперешкодної інтеграції.)

Можливо, це залишає людину двома варіантами.

Перший полягає в тому, щоб вийти з чистою кутовою сіткою, не настільки багатою функцією, як DataTables. Я погоджуюся з @Moonstom про те, щоб набридати іншими кутовими сітками там, і trNgGrid виглядає добре.

Другий варіант - сказати: це один з тих рідкісних 1 з 20 випадків, коли вам слід користуватися jQuery і перейти за допомогою плагіна jQuery DataTables, оскільки зусилля, спрямовані на винахід колеса з чистою кутовою сіткою, дали результат менш міцне колесо, ніж DataTables.

Було б добре, якби це було інакше, але я просто не бачив, щоб кутова екосистема створила настільки сильну сітку, як jQuery DataTables, і це не так, якби хороша сітка даних є приємною для веб-програми : хороша сітка є важливим.


+1 Так правда. Прикро, що DataTables ще не інтегрований; можливо, занадто щільно пов'язане з DOM, можливо.
CSSian

2
Спробуйте це l-lin.github.io/angular-datatables
Крейг

9

Ви можете використовувати bootstrap 3 класи та створити таблицю за допомогою директиви ng-repeat

Приклад:

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>

живий приклад: http://jsfiddle.net/choroshin/5YDJW/5/

Оновлення:

або ви завжди можете спробувати популярну ng-сітку , ng-grid добре підходить для сортування, пошуку, групування тощо, але я ще не перевіряв її за великими даними.


7
Так, це стандартний спосіб створити таблицю без сортування, розбиття на сторінки, фільтрування, перевантаження Ajax тощо в кутовій. Але з тисячами рядків це призведе до зупинки шліфування будь-якої програми.
mainguy

Це призведе до дуже млявого інтерфейсу користувача.
boi_echos

8

Адапт-ремінь . Ось скрипка .

Він надзвичайно легкий і має динамічну висоту рядків.

<ad-table-lite table-name="carsForSale"
               column-definition="carsTableColumnDefinition"
               local-data-source="models.carsForSale"
               page-sizes="[7, 20]">
</ad-table-lite>

Чи можливо змінити ширину стовпців?
Томаш Ващик

4

Як згадується в інших відповідях: Для таблиці з пошуком виберіть і "Папка" сторінки " ng-grid " - найкращі варіанти. Пару речей, які я натрапив, зазначу, які можуть бути корисними під час впровадження:

Щоб встановити env:

  1. http://www.json-generator.com/ для створення даних JSON. Це досить класний інструмент для отримання набору зразків даних для швидшого розвитку.

  2. Ви можете перевірити цей планкер на свою реалізацію. Я змінив, щоб включати: пошук, вибір та пагинацію http://plnkr.co/edit/gJPBz0pVxGzKlI8MGOit?p=preview

Ви можете ознайомитись з цим підручником щодо таблиці Smart, надає всю необхідну інформацію: http://lorenzofox3.github.io/smart-table-website/

Тоді наступне питання bootstrap 3: Не точно, але цей шаблон добре виглядає. - Ви можете просто використовувати https://github.com/angular-ui/bootstrap/tree/master/template, всі шаблони добре написані.

Я можу продовжити, як перетворити bootstrap 3 в angularjs, але про це вже згадувалося в наступних посиланнях:

зауважте, що стосовно смарт-таблиці ви повинні перевірити, чи готовий він для вашої кутової версії


3

Сітка Kendo хороша, як і Wijmo. Я знаю, що Кендо має кутові прив’язки для своїх джерел даних, і я думаю, що у Wijmo є кутовий плагін. Жоден з них не є безкоштовним.


3
У мене був жахливий досвід роботи з KendoUI. Він настільки роздутий, що він працює як собака і, здається, так зламаний разом для складніших компонентів, що важко, якщо не неможливо, отримати функції, що працюють, які недоступні "поза коробкою", так би мовити. Він також сильно орієнтований на роботу зі своїми серверними компонентами, і дуже погано задокументований для кращих справ. Я б залишився далеко від них!
Передбачливий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.