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 相关文章推荐
解决FireFox下[使用event很麻烦]的问题
Nov 26 Javascript
javascript call和apply方法
Nov 24 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
jQuery中delegate()方法用法实例
Jan 19 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 Javascript
Vuex中实现数据状态查询与更改
Nov 08 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 数组入门教程小结
2009/05/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
Laravel 队列使用的实现
2019/01/08 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
python实现汉诺塔方法汇总
2016/07/25 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
群教班子对照检查材料
2014/08/26 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
导游词之青城山景区
2019/09/27 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
golang特有程序结构入门教程
2021/06/02 Python
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
MySQL派生表联表查询实战过程
2022/03/20 MySQL