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 相关文章推荐
几个比较实用的JavaScript 测试及效验工具
Apr 18 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
Dec 02 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
JS扩展方法实例分析
Apr 15 Javascript
Bootstrap媒体对象的实现
May 01 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
Aug 11 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
简单了解JavaScript弹窗实现代码
May 07 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
用session做客户验证时的注意事项
2006/10/09 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
php 图片上传类代码
2009/07/17 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python生成随机密码
2015/03/10 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
python 以16进制打印输出的方法
2018/07/09 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
如何通过命令行进入python
2020/07/06 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
Python列表推导式实现代码实例
2020/09/09 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
HEMA法国:荷兰原创设计
2019/02/21 全球购物
创业计划书六个要素
2013/12/26 职场文书
国培远程培训感言
2014/03/08 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
法人代表证明书
2014/09/18 职场文书
护理实习生带教计划
2015/01/16 职场文书
留学推荐信中文范文
2015/03/26 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
MySQL 聚合函数排序
2021/07/16 MySQL