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测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
js闭包实例汇总
Nov 09 Javascript
jQuery读取XML文件内容的方法
Mar 09 Javascript
浅析JS中对函数function的理解(基础篇)
Oct 14 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
Aug 28 Javascript
实例分析vue循环列表动态数据的处理方法
Sep 28 Javascript
JS实现简单的点赞与踩功能示例
Dec 05 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
Apr 25 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
JavaScript中的this/call/apply/bind的使用及区别
Mar 06 Javascript
es6函数之尾调用优化实例分析
Apr 25 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
yii操作session实例简介
2014/07/31 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
tensorflow如何批量读取图片
2019/08/29 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python自动下载图片的方法示例
2020/03/25 Python
分层教学实施方案
2014/03/19 职场文书
师范大学生求职信
2014/06/13 职场文书
公证委托书
2014/08/01 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
重阳节慰问信
2015/02/15 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
Pytorch 实现变量类型转换
2021/05/17 Python
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers