Sencha Touch 2.2列表不重用列表项

时间:2013-05-16 10:35:04

标签: javascript sencha-touch sencha-touch-2

我有一个列表链接到一个充满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。这真的很慢。它甚至会让Safari冻结并在iOS上崩溃......

这是日志提供的内容:

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显然为我在商店中的每条记录创建了一个列表项,而不是仅仅创建了几个列表项并重新使用它们

enter image description here

有这么明显的原因吗?

1 个答案:

答案 0 :(得分:5)

您的列表中的“无限”配置是否设置为true?

您可能不希望列表一次呈现300多行,因此设置该标志将减少生成的DOM数量。