Backgrid.js 基于 Backbone.js 用于构建语义表格组件

Backgrid.js 是一个基于 Backbone.js 用于构建语义和容易样式化的 HTML 表格组件。提供简单、直观的编程接口,Backgrid.js 目标是生成一组核心主干 UI 元素,为您提供您所期望的所有基本显示、排序和编辑功能,并创建一个优雅的 API,使扩展 Backgrid.js 更容易。

Backgrid.js 基于 Backbone.js 用于构建语义表格组件

特点

  • 响应式,表格的相关样式在修改数据后立即呈现。
  • 简单实用,只需使用简单的 CSS 样式,就像普通的 HTML 表格一样。
  • 高度模块化和可定制。组件只是简单的主干视图类,如果您已经知道主干,那么定制就很容易了。
  • 轻量级,额外的功能已经被剥离成扩展,你可以很方便的使用这个扩展丰富您的项目
  • 良好的测试用例。

兼容性

  • Internet Explorer 8 [2]
  • Internet Explorer 9+
  • Chrome 4+
  • Safari 4+
  • Firefox 4+
  • Opera 9+

支持上述浏览器的桌面和移动版本。

依赖关系

Backgrid.js 依赖于3个库来运行:

 

  • jquery >= 1.7.0
  • underscore.js ~ 1.5.0
  • backbone.js >= 1.1.0
  • 每个控件的各种依赖项。

安装

自0.3.0以来,BackGrid引入了对通过AMD和CommonJS加载的支持。

AMD

如果您使用AMD,建议您使用 bower

$ bower install backgrid

而 Backgrid.js 没有直接支持 对于 AMD,您可以使用 RequireJS shim 选项。

CommonJS

如果你喜欢CommonJS,组件 是一个很好的 Web 组件管理器,它同时构建了 JS 和 CSS 资源:

$ npm install backgrid

老式的方式

您也可以下载 Backgrid core 及其多样性 扩展 并引用 HTML 中的相关文件。

基本实例

收集与模型

在网格中显示任何表格数据之前,必须先获取数据。

在最基本的级别上,BackGrid假装每一行都是一个模型对象,整个表由一个简单的主干集合支持。

假设我们有一个区域信息对象列表:

var Territory = Backbone.Model.extend({});

var Territories = Backbone.Collection.extend({

model: Territory,

url: "examples/territories.json"

});

var territories = new Territories();

格网

BackGrid 包的主要入口点是 Backgrid.Grid 类。您可以通过首先定义一些列来创建默认的 BackGrid,然后将该列列表和数据收集放到 Grid 构造函数中,如下所示:

var columns = [{

name: "id", // The key of the model attribute

label: "ID", // The name to display in the header

editable: false, // By default every cell in a column is editable, but *ID* shouldn't be

// Defines a cell type, and ID is displayed as an integer without the ',' separating 1000s.

cell: Backgrid.IntegerCell.extend({

orderSeparator: ''

})

}, {

name: "name",

label: "Name",

// The cell type can be a reference of a Backgrid.Cell subclass, any Backgrid.Cell subclass instances like *id* above, or a string

cell: "string" // This is converted to "StringCell" and a corresponding class in the Backgrid package namespace is looked up

}, {

name: "pop",

label: "Population",

cell: "integer" // An integer cell is a number cell that displays humanized integers

}, {

name: "percentage",

label: "% of World Population",

cell: "number" // A cell type for floating point value, defaults to have a precision 2 decimal numbers

}, {

name: "date",

label: "Date",

cell: "date"

}, {

name: "url",

label: "URL",

cell: "uri" // Renders the value in an HTML anchor element

}];

// Initialize a new Grid instance

var grid = new Backgrid.Grid({

columns: columns,

collection: territories

});

// Render the grid and attach the root to your HTML document

$("#example-1-result").append(grid.render().el);

// Fetch some countries from the url

territories.fetch({reset: true});

Backgrid.js 基于 Backbone.js 用于构建语义表格组件

列定义列表 Backgrid.Grid 期望的只是一个 JSON 对象的列表,您可以将其硬编码到 HTML 模板中,或者在 DOM 准备就绪时从服务器检索。BackGrid 并不关心列定义来自何处,只要您将列表提供给 Grid 构造函数。

正如预期的那样,现在显示了一个基本的可编辑数据网格。默认情况下,所有列的标题都是标记和可排序的。ID 单元格不可编辑,并且所有其他单元格类型都内置了合理的验证。如果表太大,就会得到一个滚动条。

完整示例

如果您有像上面这样大的结果集,您可能希望能够分页和过滤结果。这在Backgrid.js中很容易实现。

Js附带了许多 过滤器 和一个 分页器 扩展,您可以将其加载到自己的代码中。

若要使用分页器,必须首先将集合声明为 Backbone.PageableCollection,它是 Backbone.js 集合的一个简单子类,具有添加的分页行为。

var PageableTerritories = Backbone.PageableCollection.extend({

model: Territory,

url: "examples/pageable-territories.json",

state: {

pageSize: 15

},

mode: "client" // page entirely on the client side

});

var pageableTerritories = new PageableTerritories();

// Set up a grid to use the pageable collection

var pageableGrid = new Backgrid.Grid({

columns: [{

// enable the select-all extension

name: "",

cell: "select-row",

headerCell: "select-all"

}].concat(columns),

collection: pageableTerritories

});

// Render the grid

var $example2 = $("#example-2-result");

$example2.append(pageableGrid.render().el)

// Initialize the paginator

var paginator = new Backgrid.Extension.Paginator({

collection: pageableTerritories

});

// Render the paginator

$example2.after(paginator.render().el);

// Initialize a client-side filter to filter on the client

// mode pageable collection's cache.

var filter = new Backgrid.Extension.ClientSideFilter({

collection: pageableTerritories,

fields: ['name']

});

// Render the filter

$example2.before(filter.render().el);

// Add some space to the filter and move it to the right

$(filter.el).css({float: "right", margin: "20px"});

// Fetch some data

pageableTerritories.fetch({reset: true});

相关链接

  • 官网:http://backgridjs.com/

以上是 Backgrid.js 基于 Backbone.js 用于构建语义表格组件 的全部内容, 来源链接: utcz.com/p/232698.html

回到顶部