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 相关文章推荐
背景图跟随鼠标移动的Mootools插件实现代码
Dec 12 Javascript
javascript真的不难-回顾一下基础知识
Jan 15 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
Oct 26 Javascript
Vue.js用法详解
Nov 13 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
Vue的路由动态重定向和导航守卫实例
Mar 17 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
vue-cli点击实现全屏功能
Mar 07 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部分常见问题总结
2008/03/27 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
说一说Python logging
2016/04/15 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
美国性感女装网站:bebe
2017/03/04 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
摄影实习自我鉴定
2013/09/20 职场文书
婚前财产公证书
2014/04/10 职场文书
大学新生军训方案
2014/05/03 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
班主任先进事迹材料
2014/12/17 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
JS数组去重详情
2021/11/07 Javascript