最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
EXTjs4.0的store的findRecord的BUG演示代码
时间:2026-06-09 10:10:47 编辑:袖梨 来源:一聚教程网

复制代码 代码如下:
findRecord: function() {
var me = this,
index = me.find.apply(me, arguments);
return index !== -1 ? me.getAt(index) : null;
},
进入find方法
复制代码 代码如下:
find: function(property, value, start, anyMatch, caseSensitive, exactMatch) {
var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, exactMatch);
return fn ? this.data.findIndexBy(fn, null, start) : -1;
},
createFilterFn方法
createFilterFn: function(property, value, anyMatch, caseSensitive, exactMatch) {
if (Ext.isEmpty(value)) {
return false;
}
value = this.data.createValueMatcher(value, anyMatch, caseSensitive, exactMatch);
return function(r) {
return value.test(r.data[property]);
};
},
findIndexBy : function(fn, scope, start){
var me = this,
keys = me.keys,
items = me.items,
i = start || 0,
len = items.length;
for (; i < len; i++) {
if (fn.call(scope || me, items[i], keys[i])) {
return i;
}
}
return -1;
},
请注意
value.test(r.data[property]);有BUG的地方就出在这里
我这里用property是"ID"字段.
这里是查询ID==1的这条记录record,
它通过这个循环来做的
复制代码 代码如下:
for (; i < len; i++) {
if (fn.call(scope || me, items[i], keys[i])) {
return i;
}
},
即每次都调用
value.test(r.data[property])
这个判断是通过正则表达式来做的,
大家可以测试一下这个情况
复制代码 代码如下:
var value=new RegExp('1');
var b=value.test('15')//这个是返回成功的。
我想大家都知道原因了,
当判断ID=1的时候,遇到1开头的ID的时候,这个时候就判断出问题了。
相关文章
- 萝卜快跑运营城市名单 - 2026年最新覆盖城市查询 06-12
- 小笼包的正宗做法与技巧 - 家庭版鲜香多汁小笼包制作指南 06-12
- 双十一广告语大全 - 2026热门创意文案参考 06-12
- 夸克电脑版下载安装 - 官方最新PC客户端 06-12
- ChatGPT引发的社会焦虑现象 - 2026年深度解析 06-12
- 网红城市有哪些 - 2026热门旅游打卡地推荐 06-12