整理了一些设计Grid时候依赖产生的api思考,开始发布
需求是这样的:
1.设计前我定义了选中行的属性selectedRows是一个[],用来存放所有选中行的index信息,方便后面的选中和取消选中等相关操作。
2.现在你设计选中行和取消选中行的时候,你一定会判断当前的rowIndex是否在这个数组selectedRows里面,但是我们知道没有原生的api去支持这个arrray.indexOf.
先看看tangram的做法吧
/*
首先说明一下本人做了一下小修改,去掉了一个变量的定义。因为没有引用的地方。
*indexOf-search the index of the element in a array*
*@function*
*@param {Array} source---the array*
*@param element---the element*
*@param {number} fromIndex---the start index for search
*@remark(_ps:if fromIndex <0 will set it to source.length+fromIndex)*
*@return {number} if not find will return -1 just like js-lib*
*/
ZYC.array.indexOf = function(source,element,fromIndex){
var _lenth = source.length, //源数组对象的length
//iterator = element;
fromIndex = fromIndex || 0; //给一个默认值,这个做法我个人一直遵循
if(fromIndex < 0){
//if < 0 支持负值方向查询
fromIndex = Math.max(0,_lenth + fromIndex);
}
for(;fromIndex<_lenth;fromIndex++){
if(fromIndex in source && source[fromIndex] === element){
return fromIndex;
}
}
return -1;
};
//在自己开始设计的时候并没有想到像tangram一样支持index似的的查找
//而且比较好的是支持类似于string.slice()这样的原生api的负值反向查找的功能
通过上述的indexOf,我上面的需求也已经完成了
简单举例:
var selectedRows = [0,1,2]; //在设计getSelected的时候 //判断是否选中 //rowIndex是当前的行序号 //isSelected是当前行是否被选中 //g是grid对象或者api内部的this var isSelected = (ZYC.array.indexOf(g.selectedRows,rowIndex) != -1);
本文详细介绍了在Grid设计中优化数组搜索功能的过程,包括实现一个类似原生indexOf的函数,以支持快速查找和取消选中行的操作。通过实例演示了如何使用此自定义函数来判断行是否被选中,并提供了具体的代码实现。
1145

被折叠的 条评论
为什么被折叠?



