ホームページ > ウェブフロントエンド > jsチュートリアル > EXTjs4.0_extjs のストアにある findRecord のバグ デモ コード

EXTjs4.0_extjs のストアにある findRecord のバグ デモ コード

WBOY
リリース: 2016-05-16 17:32:27
オリジナル
1135 人が閲覧しました

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 のレコードをクエリするには、
このループを通じて実行されます




コードをコピーします

コードは次のとおりです: for (; i < len; i ) { if (fn.call(scope || me, items[i], Keys[i])) { return i; }
},


つまり、
value.test(r.data[property]) は
によって毎回呼び出されます。正規表現
この状況をテストできます



コードをコピーします

理由は皆さんご存知かと思いますが、
ID=1 と判定される場合、1 から始まる ID があった場合、その時点で問題があると判断されます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート