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 相关文章推荐
JQuery从头学起第一讲
Jul 04 Javascript
写js时遇到的一些小问题
Dec 06 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
求数组最大最小值方法适用于任何数组
Aug 16 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
jQuery增加、删除及修改select option的方法
Aug 19 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
knockoutjs模板实现树形结构列表
Jul 31 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
VUEX-action可以修改state吗
Nov 19 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 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
对xmlHttp对象的理解
2011/01/17 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
python中将字典转换成其json字符串
2014/07/16 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python实现基于POS算法的区块链
2018/08/07 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
python 实用工具状态机transitions
2020/11/21 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
什么是抽象
2015/12/13 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
生产班组长岗位职责
2014/01/05 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
目标责任书格式
2014/07/28 职场文书
三八活动策划方案
2014/08/17 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
六一亲子活动感想
2015/08/07 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python