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 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
jquery 注意事项与常用语法小结
Jun 07 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
angularjs指令之绑定策略(@、=、&amp;)
Apr 13 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
JavaScript门面模式详解
Oct 19 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
Sep 29 Javascript
express 项目分层实践详解
Dec 10 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
js判断两个数组相等的5种方法
May 06 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实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
PHP文件操作详解
2016/12/30 PHP
javascript学习网址备忘
2007/05/29 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
深入理解Python中的内置常量
2017/05/20 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python版DDOS攻击脚本
2019/06/12 Python
python版百度语音识别功能
2019/07/09 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
办公室前台岗位职责范本
2013/12/10 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
中职生求职信
2014/07/01 职场文书
出生医学证明书
2014/09/15 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
庆祝教师节主持词
2015/07/06 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
总结python多进程multiprocessing的相关知识
2021/06/29 Python