ExtJS网格筛选器触发太频繁

bjp0bcyl  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(156)

我有一个使用“经典”API的ExtJS 6.2网格。我没有做大量的Ext,所以请耐心等待。但是我们有一个网格,我们在各种应用程序中反复使用,只做了轻微的定制。在一个网格中,我们有一个文本字段的过滤器。但该过滤器触发一个重载真的很快作为默认行为。太快的人键入任何有意义的。我'我想让这只小狗慢下来。理想情况下,我希望只有在菜单关闭时才重新加载,但如果我至少可以增加从某人输入到重新加载的时间,我至少可以使它合理。
问题是我不知道怎么做,而且浏览一下帮助文档似乎没有显示任何设置(也许我找错了地方)。有什么想法吗?
过滤器定义为:
{类型:'字符串',数据索引:'assetId',值:“”,主动:错误}

qni6mghb

qni6mghb1#

你需要给change事件添加一个缓冲区。这样只要有人输入就没有事件会被处理。一旦500ms内没有人更改文本域的值,事件就会被处理。

controller: 'main',

items: [{
    xtype: 'textfield',
    fieldLabel: 'Filter By Name',
    listeners: {
        change: 'onFilterfieldChange',
        buffer: 500
    }
}]

控制器

Ext.define('MyApp.main.MainController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.main',

    onFilterfieldChange: function(textfield, newValue) {
        let store = this.getViewModel().getStore('gridStore');

        store.clearFilter(true);
        store.setFilter([
            { property: 'firstName', value: newValue}
        ]);
        store.load();
    }
});

相关问题