zoukankan      html  css  js  c++  java
  • EXTjs4.0 的store的findRecord的BUG.

     在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的时候,这个时候就判断出问题了。

  • 相关阅读:
    Java内存区域
    高并发
    集合框架
    面向对象基础概念
    java synchronized详解
    java使用DOM操作XML
    二、认识Xcode(第一个工程:Hello world)
    菜鸟手下的iOS开发笔记(swift)
    一、iOS开发环境搭建
    一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(十)使用JRTPLIB传输RTP数据
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3125196.html
Copyright © 2011-2022 走看看