最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

EXTjs4.0的store的findRecord的BUG演示代码_extjs

来源:动视网 责编:小采 时间:2020-11-27 21:10:10
文档

EXTjs4.0的store的findRecord的BUG演示代码_extjs

EXTjs4.0的store的findRecord的BUG演示代码_extjs:在findRecord方法调用了 findRecord: function()这个方法 代码如下: findRecord: function() { var me = this, index = me.find.apply(me, arguments); return index !== -1 me.getAt(index) : null
推荐度:
导读EXTjs4.0的store的findRecord的BUG演示代码_extjs:在findRecord方法调用了 findRecord: function()这个方法 代码如下: findRecord: function() { var me = this, index = me.find.apply(me, arguments); return index !== -1 me.getAt(index) : null


在findRecord方法调用了 findRecord: function()这个方法
代码如下:
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的时候,这个时候就判断出问题了。

文档

EXTjs4.0的store的findRecord的BUG演示代码_extjs

EXTjs4.0的store的findRecord的BUG演示代码_extjs:在findRecord方法调用了 findRecord: function()这个方法 代码如下: findRecord: function() { var me = this, index = me.find.apply(me, arguments); return index !== -1 me.getAt(index) : null
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top