【问题标题】:How to solve problems of performance in the clearFilter() funcion in Sencha Touch?如何解决 Sencha Touch 中 clear Filter() 函数的性能问题?
【发布时间】:2015-12-16 09:41:05
【问题描述】:

我在 Sencha Touch 应用程序中工作,当我使用“clearFilter()”时,我在性能方面付出了很大的努力......例如,当我在搜索字段中编写并遵循过滤器中指定的规则时(从第二个字符开始)我正在等待写下一个字符。发生了什么?

目前我的实现是这样的:

store.clearFilter();
if (queryString && queryString.length > 2) {
      var thisRegEx = new RegExp(queryString, "i");
      store.filterBy(function (record) {
        return (thisRegEx.test(record.get('customerId')) ||
        thisRegEx.test(record.get('customerName')) ||
        thisRegEx.test(record.get('customerAddress')));
      }, this);
    }

它正在工作,但出现了问题。

如何正确解决这个问题?

【问题讨论】:

  • 您没有发布任何相关代码。
  • 代码添加@EvanTrimboli
  • clearFilter 的电话在哪里?
  • 之前的查询..
  • 在搜索字段中输入字符后,您是否使用了 2-3 秒的延迟来运行代码?

标签: javascript extjs sencha-touch datastore


【解决方案1】:

clearFiltersuppressEvent 参数:

true 在不触发 refresh 事件的情况下静默清除。

所以试试store.clearFilter(true)

【讨论】:

    【解决方案2】:

    首先,商店里有多少条记录?记录的数量会对此产生很大影响。

    为了提高性能,您应该将这 3 个字段合并到另一个字段中,以便您可以使用一个正则表达式在一列中进行搜索。 3 正则表达式对于每条记录可能很昂贵。这样,您也可以使用 filter 方法,而不是 filterBy

    最后,我更喜欢在此处为侦听器使用 buffer 选项,以避免每次按下按键都给打字员带来困难。例如:

    xtype: 'textfield',
    listeners: { 
       keyup: {
           buffer: 500, // 500ms
           fn: function(){
               // filter code
           }
       }
    }
    

    【讨论】:

    • 一个问题,您的方法是使用 Touch 还是使用 ExtJs?因为我没有找到缓冲区或 enableKeyEvents 属性.. 顺便说一下,在我的情况下,我只有 50 条基于前一个过滤器的记录..
    • @inane 但您清除了该过滤器,因此您有超过 50 条记录。比清除过滤器更好的是只应用一个新的过滤器。您可以为过滤器提供id 属性。当您使用相同的id 设置另一个过滤器时,它会覆盖旧过滤器。
    • 对不起,我不明白...你是说不要使用“clearFilter()”吗?
    • 抱歉,enableKeyEvents 已删除,但缓冲区为 there
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多