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


Posted in Javascript onJune 08, 2013

在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的时候,这个时候就判断出问题了。
Javascript 相关文章推荐
简明json介绍
Sep 28 Javascript
ajax中get和post的说明及使用与区别
Dec 23 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
Dec 29 Javascript
jQuery中:last选择器用法实例
Dec 30 Javascript
js实现在网页上简单显示时间的方法
Mar 02 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
Dec 25 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
利用vscode编写vue的简单配置详解
Jun 17 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
Vue使用v-viewer实现图片预览
Oct 21 Javascript
JavaScript String.replace函数参数实例说明
Jun 06 #Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 #Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 #Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 #Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 #Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 #Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 #Javascript
You might like
网站当前的在线人数
2006/10/09 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
详解javascript高级定时器
2015/12/31 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python字典快速保存于读取的方法
2018/03/23 Python
python实现简单登陆流程的方法
2018/04/22 Python
实践Vim配置python开发环境
2018/07/02 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
留学自荐信的技巧
2013/10/17 职场文书
六年级学生期末评语
2014/12/26 职场文书
检讨书模板
2015/01/29 职场文书
教师辞职信范文
2015/02/28 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers