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 相关文章推荐
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 Javascript
把普通对象转换成json格式的对象的简单实例
Jul 04 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 Javascript
纯JS实现轮播图
Feb 22 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
解析vue中的$mount
Dec 21 Javascript
JS运动特效之链式运动分析
Jan 24 Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
PHP实现网上点歌(二)
2006/10/09 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
python修改操作系统时间的方法
2015/05/18 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Python: glob匹配文件的操作
2020/12/11 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
文秘专业个人求职信
2013/12/22 职场文书
升旗仪式主持词
2014/03/19 职场文书
广告宣传策划方案
2014/05/21 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书