使用Bootstrap 3在AngularJS中表示网格或表格的最佳方法?

Rah*_*nna 284 angularjs ng-grid twitter-bootstrap-3 angular-ui-grid smart-table

我正在使用AngularJS和Bootstrap 3创建一个App.我想显示一个包含数千行的表/网格.AngularJS和Bootstrap的最佳可用控件是什么,具有排序,搜索,分页等功能.

Ric*_*son 223

在尝试了ngGrid,ngTable,trNgGrid和Smart Table之后,我得出结论,智能表是迄今为止AngularJS-wise和Bootstrap-wise的最佳实现.它的构建方式与使用标准角度构建自己的天真表格完全相同.最重要的是,他们添加了一些指令,帮助您进行排序,过滤等.他们的方法也使得扩展自己变得非常简单.事实上,他们使用常规的html标签表和行标准ng-repeat以及标准引导程序进行格式化,这使我成为明显的赢家.

他们的JS代码依赖于angular,如果你愿意,你的html可以依赖于bootstrap.JS代码总共为4 kb,如果你想要占用更小的空间,你甚至可以轻松地从那里挑选东西.

其他网格将在不同区域给你幽闭恐惧症,智能表只是感觉开放和重点.

如果您非常依赖内联编辑和其他高级功能,那么您可以使用ngTable更快地启动和运行.但是,您可以在Smart Table中轻松添加此类功能.

不要错过智能桌!

除了自己使用Smart Table之外,我与Smart Table无关.

  • 刚刚在智能表中发现了一个小错误,报告了它并在几小时内得到修复.令我惊讶的是,并非所有人都使用智能表 - 它比其他所有人都好. (12认同)

Lar*_*nke 116

我有相同的要求,并使用这些组件解决它:

表组件ng-grid能够在可滚动网格中显示数百行.如果你必须处理成千上万的条目,你最好使用ng-grid的分页器.ng-grid的文档非常好,包含许多示例.即使与分页相结合,也支持排序和搜索.

以下是当前项目的屏幕截图,可让您了解它的外观:

在此输入图像描述

[2017年7月更新]

在将ng-grid投入生产几年后,我仍然可以说这个组件没有重大问题.是的,有很多小错误,但没有显示停止者(至少在我的用例中).话虽如此,如果你从头开始一个项目,我强烈反对使用这个组件.只有绑定到AngularJS 1.0.x时,此组件才是一个不错的选择.如果您可以自由选择Angular版本,请选择较新的组件.Sam Deering在本博客中汇编了Angular 4的表组件列表.

  • Wijmo还提供Angular Directives以及分组,排序等功能.您还可以使用AngularJS检查ngGrid和Wijmo Grid的Benchmark示例:http://demos.componentone.com/wijmo/Angular/GridBenchmark/GridBenchmark/ (2认同)
  • 2016年统计数据显示ng-tables插件仍然需求:GitHub:A.ng-grid:~3500提交,约800个问题.B.智能表:~300个提交,~40个问题.C. ng-table:~500个提交,~200个问题.谷歌趋势通过比较证明了相同的想法:"角度智能表","角度ui网格","角度ng表".https://www.google.com/trends/explore#q=angular%20smart%20table%2C%20angular%20ui%20grid%2C%20angular%20ng%20table&cmpt=q&tz=Etc%2FGMT-0 (2认同)

Bey*_*ers 87

使用"数千行",您最好的选择显然是进行服务器端分页.当我稍后查看不同的AngularJs表/网格选项时,有三个明显的收藏:

这三个都很好,但实施方式不同.你选择哪一个可能更多地基于个人偏好而不是其他任何东西.

ng-grid可能是最知名的,因为它与angular-ui有关,但我个人更喜欢ng-table,我真的很喜欢它们的实现以及你如何使用它,并且它们有很好的文档和示例,并且正在积极地进行改进.

  • 嘿,角度生态系统的新手,我最初尝试使用ng-grid因为"更好"的网站,但由于他们深层嵌套的div结构,很快就遇到了样式问题.到目前为止,我更喜欢ng-table,因为它实际上使用了`table`.我可以只应用bootstrap表类,它可以... (10认同)
  • 我很高兴看到有人提到ng-table.我也更喜欢ng-table而不是ng-grid,因为它具有更好的样式,特别是在编辑模式下. (7认同)
  • ng-table大部分都处于休眠状态,因为它由乌克兰的一个人维护,那里还有很多其他问题.ng-grid正在重新编写为3.0版的ui-grid,但还没有为生产做好准备.所以现在通常不是选择或切换Angular表实现的好时机.Smart-Table也或多或少由一个人维护.我们目前正在使用ng-table,但我们计划在成熟时切换到ui-grid. (4认同)
  • 在这里跳上ngTable的潮流.我和ng-grid一起参加了一个项目并且非常糟糕.我使用ng-grid纯粹是因为它与angular-ui有关,而且它似乎在github上更加活跃.我想我要换成ngTable.希望它不会太难. (2认同)

Moo*_*tom 77

功能丰富的Angular网格就是这样一个:

trNgGrid

它的一些功能:

  • 在构建时考虑到了简单性.
  • 使用纯HTML表格,允许浏览器优化渲染.
  • 完全声明,保留关注点的分离,从而允许您在HTML中完全描述它,而不会弄乱您的控制器.
  • 可通过模板和双向数据绑定属性完全自定义.
  • 易于维护,使用TypeScript编写代码.
  • 有一个很短的依赖列表:AngularJs和Bootstrap CSS,带有可选的Bootswatch主题.

trNgGrid

请享用.是的,我是作者.我厌倦了那里的所有Angular网格.

  • 这需要更多的认可.我从`ngGrid`开始.我无法弄清楚我应该使用哪个版本,因为我猜我开始在他们的2.x到3.x之间进行过渡,我甚至无法让桌子工作.然后我转移到`ngTable`哪种工作.我无法使排序或分页正常工作,但这是由于我从`$ http`加载数据的方式.然后我看到了这个`trNgGrid`和神圣的废话......很容易起床和跑步.希望我能在这里写更多内容,但我建议大家先试试这个! (5认同)
  • 它看起来不错,但找不到关键项目,如固定标题,可调整大小的列,可拖动的列等. (4认同)
  • 我完全赞同@Ronnie.这应该是给予更多的关注.经过一整天'与ng-grid/ui-grid'的斗争,做了一些更复杂的事情,我尝试了trNgGrid并尝试了第一次尝试. (2认同)

agu*_*luc 39

对于阅读这篇文章的任何人:帮自己一个忙,远离ng-grid.充满了错误(真的......几乎每个部分的lib都以某种方式被破坏),开发人员已经放弃了2.0.x分支的支持,以便在3.0中工作,这已经很准备了.自己修复问题并不是一件容易的事,ng-grid代码不小而且不简单,除非你有大量的时间和对角度和js的深入了解,否则它将是一项艰巨的任务.

底线:充满了错误,最后一个稳定版本已被放弃.

github充满了PR,但它们被忽略了.如果您报告2.x分支中的错误,它将被关闭.

我知道这是一个开源的proyect,抱怨可能听起来有点不合适,但从寻找图书馆的开发人员的角度来看,这是我的看法.我花了很多时间在一个大型项目中使用ng-grid,并且headcaches永远不会结束


小智 15

到目前为止,TrNgGrid工作得很好.以下是我更喜欢ng-grid并移动到此组件的原因

  • 它使表元素可以被boottatched并使用bootstrap .css的所有功能(ng-grid使用jQuery UI主题).

  • 简单,记录良好的网格选项.

  • 服务器大小分页工作


mg1*_*075 10

在这个问题的答案结束时,如果你有一个jQuery背景,如何在Angular中思考,Josh David Miller的最高职位总结如下:

甚至不使用jQuery.甚至不包括它.它会阻止你.当你遇到一个问题,你认为你已经知道如何在jQuery中解决,在你达到之前$,试着考虑如何在AngularJS的范围内做到这一点.如果你不知道,请问!20次中有19次,最好的方法是不需要jQuery并尝试使用jQuery解决它,为您提供更多的工作.

现在,如果您想要一个具有大量功能和自定义选项的网格, jQuery DataTables是最好的之一.我见过的Angular-only网格并没有接近jQuery DataTables可以做的事情.

但是,jQuery DataTables与AngularJS无法很好地集成.(已经做了各种努力,但没有一个提供无缝集成.)

也许这让人有两种选择.

第一种是使用纯粹的Angular网格,它不像DataTables那样功能丰富.我同意@Moonstom关于厌倦了那里的其他Angular网格,并且trNgGrid确实看起来不错.

第二个选项是:这是20个案例中罕见的一个,你应该使用jQuery并使用jQuery DataTables插件,因为使用纯Angular网格重新发明轮子的努力已经产生了比DataTables更不稳健的车轮.

如果不是这样的话会很好,但我还没有看到Angular生态系统像jQuery DataTables一样强大的网格,并且它不像一个好的数据网格是一个很好的网络应用程序:良好的网格是必不可少的.

  • 试试这个http://l-lin.github.io/angular-datatables (2认同)

Ale*_*hin 9

您可以使用bootstrap 3类并使用ng-repeat指令构建表

例:

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

function ctrl($scope) {
    $scope.items = [
        ['A', 'B', 'C'],
        ['item1', 'item2', 'item3'],
        ['item4', 'item5', 'item6']
    ];
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

实例: http ://jsfiddle.net/choroshin/5YDJW/5/

更新:

或者你总是可以尝试流行的ng-grid,ng-grid有利于排序,搜索,分组等,但我还没有对大规模数据进行过测试.

  • 是的,这是在Angular中创建没有排序,分页,过滤,ajax raloading等表格的标准方法.但是,如果有数千行,这将使任何应用程序停止运转. (7认同)

kas*_*php 8

Adapt-Strap.这是小提琴.

它非常轻巧,具有动态的行高.

<ad-table-lite table-name="carsForSale"
               column-definition="carsTableColumnDefinition"
               local-data-source="models.carsForSale"
               page-sizes="[7, 20]">
</ad-table-lite>
Run Code Online (Sandbox Code Playgroud)