Facebook の友達でいっぱいのストアにリンクされたリストがあります。約 350 のレコードが含まれています。キーアップ時に次の機能をトリガーするリストの上部に検索フィールドがあります。
filterList: function (value) {
// console.time(value);
if (value === null) return;
var searchRegExp = new RegExp(value, 'g' + 'i'),
all = Ext.getStore('Friends'),
recent = Ext.getStore('Recent'),
myFilter;
all.clearFilter();
recent.clearFilter();
// console.log(value, searchRegExp);
myFilter = function (record) {
return searchRegExp.test(record.get('name'));
}
all.filter(myFilter);
recent.filter(myFilter);
// console.timeEnd(value);
},
現在、これは ST2.1.1 で問題なく動作していましたが、アプリを ST2.2 にアップグレードしたためです。本当に遅いです。iOSでSafariがフリーズしてクラッシュすることさえあります...
これはログが与えるものです:
t /t/gi Friends.js:147
t: 457ms Friends.js:155
ti /ti/gi Friends.js:147
ti: 6329ms Friends.js:155
tit /tit/gi Friends.js:147
tit: 7389ms Friends.js:155
tito /tito/gi Friends.js:147
tito: 7137ms
なぜ今このように動作するのか、またはより良いフィルター方法を持っている人はいますか?
アップデート
パラメータを指定して呼び出すclearFilter
とtrue
速度が向上するように見えますが、まだ以前ほど速くはありません。
アップデート
実際には、ストアのフィルタリングとは何の関係もありません。
リストアイテムのレンダリングに関係しています。Sencha は、いくつかのリストアイテムを作成して再利用するのではなく、ストアにあるすべてのレコードに対してリストアイテムを作成しているようです
このように振る舞う明らかな理由はありますか?