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

  • 相关阅读:
    电容的用法:去耦、旁路、滤波等
    成为出色工程师的十大要素
    常用三极管的区别 9012 9013 9014 9015 8550 8050
    照明的几个光学概念
    PCB元件封装
    为什么诈骗短信看上去那么弱智
    摄像·镜头
    LED家居照明
    光色的应用与照度范围
    PowerPCB(PADS)常见问题全集
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3125196.html
Copyright © 2011-2022 走看看