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 相关文章推荐
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
每天一篇javascript学习小结(Function对象)
Nov 16 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
Javascript基础之数组的使用
May 13 Javascript
微信小程序  modal详解及实例代码
Nov 09 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
JavaScript监听触摸事件代码实例
Dec 30 Javascript
jquery插件实现悬浮的菜单
Apr 24 jQuery
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
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python中is和==的区别详解
2018/11/15 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python中的 enum 模块源码详析
2019/01/09 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android