常规的使用方法如下:
Ext.define('MyModel', { extend: 'Ext.data.Model', fields: [ {name: 'item1', type: 'int'}, {name: 'item2', type: 'int'}, {name: 'item3', type: 'string'} ] }); myStore = Ext.create('Ext.data.Store', { model: 'MyModel', groupField: 'item1', groupDir: 'ASC' }); var groups = myStore.getGroups(); for (var i = 0; i < groups.length; i++) { console.log(groups[i].name); }
myStore.sort(sortColumn, 'ASC'); var temp = null; myStore.each(function (record) { console.log(record.get(sortColumn)); }); temp = myStore.collect(sortColumn); console.log(temp);
从网上搜索可知:js中当前存在的数据类型有:Undefined、Null、Boolean、Number和String。
Number 类型中包括有 整数、浮点数、NaN(Not a Number)
如果由于某种原因传入给 store 中某个字段的值类型是字符串,而此时需要对此字段排序,这样的话,排序的结果是按照字符串中字母的字典顺序进行排序的。例如:本文中提供的例子的结果是:
["1063", "2657", "3659", "656", "657", "660", "663", "665"]
而只需要修改store中数据模型中字段改成数字类型,这就是我们想要的结果了。同时,这也是为什么ExtJS建议创建store时最好将数据模型中各个字段的数据类型定义好的缘故了。
[656, 657, 660, 663, 665, 1063, 2657, 3659]
总体感觉,好的工具能够使得任务变得简单,但几乎每个工具都不是为我们的需求设计的,例如有时候我们需要同时用到分组和排序功能,但分组只能用一次(初始化时),排序可以多次选择不同字段排序,故规定了只能先用分组功能,完了后,就删除分组,再使用排序功能。所以总会有些地方需要修改。这时就是发挥程序创造力的时候了,也是作为一个程序员比较有成就感的地方了。