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代码
Dec 15 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
javascript中万恶的function实例分析
May 25 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
Vue数据驱动模拟实现1
Jan 11 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 09 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
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
vue实现拖拽效果
2019/12/23 Javascript
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python阶乘求和的代码详解
2020/02/14 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
益模软件Java笔试题
2012/03/27 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
数学复习课教学反思
2016/02/18 职场文书
创业计划书之物流运送
2019/09/17 职场文书
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS