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 相关文章推荐
lib.utf.js
Aug 21 Javascript
ajax 同步请求和异步请求的差异分析
Jul 04 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
Aug 26 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
3种vue组件的书写形式
Nov 29 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
Vue3配置axios跨域实现过程解析
Nov 25 Vue.js
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/03/24 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
Python实现字符串格式化输出的方法详解
2017/09/20 Python
浅谈Python的list中的选取范围
2018/11/12 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
列车长先进事迹材料
2014/01/25 职场文书
仓管岗位职责范本
2014/02/08 职场文书
学生鉴定评语大全
2014/05/05 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
委托培训协议书
2014/11/17 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL