在开发Web应用程序时,经常需要展示和操作数据表格。为了提升用户体验和开发效率,希望这些表格能够支持排序、过滤等功能,并且能够在客户端完成这些操作。此外,也希望这些表格能够简单易用,并且具有高度的可定制性。本文将介绍如何使用Knockout.js创建一个自定义的数据表格绑定。
在业务应用程序中,需要一个外观良好且能够进行排序和过滤的网格。为了更好的用户体验,这些操作应该在客户端完成。为了更好的开发体验,它应该简单易设置(即,只需指定要显示的每个列的成员字段)并且灵活(或者提供函数或甚至是Knockout模板)。列应该是可隐藏的。理想情况下,它应该是数据驱动的(即,没有jQuery事件,只需在JavaScript中设置控件的属性,网格就会更新!这被称为MVVM编程)。
决定依赖以下技术来实现这个控件:
除了样式文件(这是一个Web应用程序!)和测试文件(当然),还有2个源文件:
要使用网格,只需在适当样式化的TABLE标签上调用"kogrid"绑定,如下所示:
<table class="table table-striped table-bordered table-hover table-condensed" data-bind='kogrid: gridViewModel'></table>
这里的类是Bootstrap表格样式。传递给kogrid绑定的数据必须是KOGridModel(如在KOGridBinding.ts中定义的),如果不是这样,将抛出异常作为提醒。
KOGridModel类具有描述网格状态的所有属性。以下是一些关键属性的说明:
计算属性是Knockout.js的一个强大功能,它允许基于其他observables的值来计算新的值。在本文中,使用了计算属性来实现过滤和排序后的当前项目列表,以及当前页面的项目列表等。
本文介绍了一个新的Knockout绑定扩展:"kogrid"及其相关的数据模型"KOGridModel"。它们一起使创建外观良好、可定制、过滤和排序的数据网格变得非常简单。