findRecord: function() メソッドは、findRecord メソッド
コードをコピー で呼び出されます。 コードは次のとおりです。 findRecord: function() {
var me = this,
index = me.find.apply(me, argument);
return インデックス !== -1 ? me.getAt(index) : null;
検索メソッドを入力します
コードをコピーします
コードは次のとおりです: find: function(property, value, start, anyMatch, caseSensitive, strictMatch) { var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, strictMatch);
return fn this ? .data.findIndexBy(fn, null, start) : -1;
},
createFilterFn メソッド
createFilterFn: function(property, value, anyMatch, caseSensitive, strictMatch) {
if (Ext. isEmpty(value)) {
return false;
}
value = this.data.createValueMatcher(value, anyMatch, caseSensitive, strictMatch);
return function(r) {
return value .test(r.data[property]);
};
},
findIndexBy : function(fn,scope, start){
var me = this,
keys = me.キー、
items = me.items、
i = start || 0、
for (; i < len; i ) {
if (fn.call(scope || me, items[i], key[i])) {
return i;
}
}
return
},
注意してください
value.test(r.data[property]); ここでバグが発生します
ここで使用するプロパティは「ID」フィールドです。 ID==1 のレコードをクエリするには、
このループを通じて実行されます
コードをコピーします
},
つまり、
value.test(r.data[property]) は
によって毎回呼び出されます。正規表現
この状況をテストできます
コードをコピーします
理由は皆さんご存知かと思いますが、
ID=1 と判定される場合、1 から始まる ID があった場合、その時点で問題があると判断されます。