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 相关文章推荐
javascript 建设银行登陆键盘
Jun 10 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
Mar 09 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
js 距离某一时间点时间是多少实现代码
Oct 14 Javascript
Javascript中innerHTML用法实例分析
Jan 12 Javascript
js实现文本框选中的方法
May 26 Javascript
node网页分段渲染详解
Sep 05 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
Jan 23 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
微信小程序实现美团菜单
Jun 06 Javascript
如何在VUE中使用vue-awesome-swiper
Jan 04 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
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Es6 Generator函数详细解析
2018/02/24 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
python字符串中的单双引
2017/02/16 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
文明宿舍获奖感言
2014/02/07 职场文书
优秀实习生感言
2014/03/01 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
初中思品教学反思
2016/02/20 职场文书