ExtJS 中 store 的使用经验

分组

常规的使用方法如下:

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);
}

对于使用 getGroups 函数的一些困惑,不知道有没有读者知道怎么解决:必须在刚开始的时候建立好分组功能,或者说  getGroups 第二个参数不能使用。这样的话就限制了必须先用分组功能,再通过清除分组,再使用其他功能。

排序

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] 

总结

总体感觉,好的工具能够使得任务变得简单,但几乎每个工具都不是为我们的需求设计的,例如有时候我们需要同时用到分组和排序功能,但分组只能用一次(初始化时),排序可以多次选择不同字段排序,故规定了只能先用分组功能,完了后,就删除分组,再使用排序功能。所以总会有些地方需要修改。这时就是发挥程序创造力的时候了,也是作为一个程序员比较有成就感的地方了。

你可能感兴趣的:(ExtJS 中 store 的使用经验)