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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
js 事件的传播机制(实例讲解)
Jul 20 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
vue项目tween方法实现返回顶部的示例代码
Mar 02 Javascript
使用Vue构建可重用的分页组件
Mar 26 Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
详解vue3.0 的 Composition API 的一种使用方法
Oct 26 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
js 事件小结 表格区别
2007/08/13 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Django 实现购物车功能的示例代码
2018/10/08 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
六年级学生评语
2014/04/22 职场文书
党的作风建设心得体会
2014/10/22 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2015年酒店工作总结
2015/04/28 职场文书
关于感恩的作文
2019/08/26 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python