我正在使用AngularJS和Bootstrap 3创建一个应用程序。我想展示一个包含数千行的表格/网格。在AngularJS和Bootstrap中,有哪些最好的控件可用于具有排序、搜索、分页等特性。
我正在使用AngularJS和Bootstrap 3创建一个应用程序。我想展示一个包含数千行的表格/网格。在AngularJS和Bootstrap中,有哪些最好的控件可用于具有排序、搜索、分页等特性。
在试用了ngGrid、ngTable、trNgGrid以及Smart Table之后,我得出结论:就AngularJS和Bootstrap而言,Smart Table是最好的实现。它的构建方式与使用标准 Angular 相同,就像您自己构建朴素表格一样。此外,他们添加了一些指令来帮助您进行排序、过滤等操作。这种方法也使得扩展变得非常简单。他们将表格的常规 HTML 标签和行的标准 ng-repeat 与标准的 Bootstrap 格式相结合,使其成为我的明显赢家。
他们的 JS 代码依赖于 Angular,如果需要,您的 HTML 可以依赖于 Bootstrap。JS 代码总共只有 4 kb,即使您想要进一步减少体积,也可以轻松地从中提取内容。
与其他表格相比,Smart Table 给人的感觉更开放、简洁。
如果您严重依赖于行内编辑和其他高级功能,则可能会更快地开始使用 ngTable 等工具。但是,在 Smart Table 中,您完全可以轻松添加此类功能。
不要错过Smart Table!!!
除了自己使用外,我与 Smart Table 没有关系。
我有相同的需求,并使用以下组件解决:
表格组件ng-grid能够在可滚动网格中显示数百行。如果您必须处理数千个条目,最好使用ng-grid的分页器。ng-grid的文档非常出色,包含许多示例。即使与分页一起使用,也支持排序和搜索。
下面是当前项目的截图,以便给您一个印象:
[2017年7月更新]
经过几年的生产实践,我仍然可以说这个组件没有重大问题。是的,有很多小错误,但没有致命错误(至少在我的用例中)。话虽如此,如果您从头开始启动项目,则强烈建议不要使用此组件。这个组件只有在绑定AngularJS 1.0.x时才是一个好选择。如果您可以自由选择Angular版本,请选择更新的组件。Sam Deering在这篇博客中列出了适用于Angular 4的表格组件列表。
table
。我只需要应用 Bootstrap 的表格类,它就可以正常工作了... - Pierre Henry这是一个功能齐全的Angular表格:
它的一些特点:
享受吧。是的,我是作者。我受够了所有那些Angular表格了。
ngGrid
,但是我无法确定应该使用哪个版本,因为我开始是在他们从2.x到3.x过渡的时间段内查找的,而且我甚至不能让表格正常工作。然后我转向了ngTable
,有点起色。但是我无法正确地使排序或分页功能工作,但这可能是由于我从$http
加载数据的方式不同。然后我看到了这个trNgGrid
,非常容易上手。希望我能在这里写更多,但我建议每个人都先试试这个! - Ronnie对于阅读本帖的任何人:请自重,远离ng-grid。它充满了错误(真的...几乎每个部分都有点毛病),开发者已经停止支持2.0.x分支以便于工作于3.0版本,但这个版本还远没有准备好。自己修复问题不是一件容易的事情,ng-grid代码量不小,而且也不简单,除非你有充足的时间和深厚的Angular和JS知识,否则将是一项艰巨的任务。
底线:充满了错误,最后一个稳定版本也已被放弃。
Github上充斥着PR,但它们都被忽视了。如果在2.x分支中报告bug,则会被关闭。
我知道这是一个开源项目,抱怨可能有点不合适,但从一个寻找库的开发者的角度来看,这就是我的看法。我花了很多时间在一个大型项目中使用ng-grid,头痛不断。
到目前为止,TrNgGrid工作得非常好。以下是我喜欢它胜过ng-grid并转向使用该组件的原因:
它创建表格元素,因此可以使用所有bootstrap.css的强大功能,例如bootswatched(而ng-grid使用jQuery UI主题)。
简单、文档良好的网格选项。
服务器端分页功能正常工作。
甚至不要使用jQuery。不要甚至包括它。它会阻碍你的发展。 当你遇到一个你认为自己已经知道如何解决的jQuery问题时,在使用
$
之前, 尝试想想如何在AngularJS的约束条件下解决它。如果你不知道,那就问! 在20次尝试中,有19次最好的方法不需要jQuery, 尝试用jQuery来解决会给你带来更多的工作。
现在,如果你想要一个具有丰富功能和定制选项的网格, jQuery DataTables是最好的之一。 我看到的仅限于Angular的网格无法与jQuery DataTables相匹配。
但是,jQuery DataTables与AngularJS集成效果不好。 (虽然有过各种努力,但没有提供无缝集成。)
也许这留给人们两个选择。
第一种选择是使用不像DataTables那样丰富的纯Angular网格。 我同意@Moonstom对其他Angular网格感到厌烦,并且trNgGrid看起来不错。
第二个选项是说:这是那些罕见的20中的1种情况, 在这种情况下,您应该使用jQuery并选择jQuery DataTables插件, 因为通过使用纯Angular网格重新发明轮子的努力产生了比DataTables不够强大的轮子。
如果情况不是这样,那就好了,但是我没有看到 Angular生态系统提供了像jQuery DataTables一样强大的网格, 而且一个良好的数据网格在Web应用程序中并不是可有可无的:它是必不可少的。
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>
Adapt-Strap非常轻量级,具有动态行高。
这里是代码演示。
<ad-table-lite table-name="carsForSale"
column-definition="carsTableColumnDefinition"
local-data-source="models.carsForSale"
page-sizes="[7, 20]">
</ad-table-lite>
正如其他答案所提到的:对于带有搜索、选择和分页的表格,"ng-grid" 是最好的选项。我遇到了一些事情,我会提一下,在实现时可能会很有用:
设置环境:
http://www.json-generator.com/ 生成JSON数据。这是一个非常酷的工具,可以获得样本数据集以加快开发速度。
您可以查看此Plunker进行实现。我进行了修改,包括:搜索、选择和分页http://plnkr.co/edit/gJPBz0pVxGzKlI8MGOit?p=preview
您可以查看关于智能表格的教程,提供您所需的所有信息: http://lorenzofox3.github.io/smart-table-website/
接下来的问题是关于Bootstrap 3
:
虽然不完全一样,但这些模板看起来很不错。
- 你可以直接使用https://github.com/angular-ui/bootstrap/tree/master/template,所有的模板都写得很好。