分机 JS 组合。过滤时保持扩展

Posted

技术标签:

【中文标题】分机 JS 组合。过滤时保持扩展【英文标题】:Ext JS Combo. Keep expanded while filtering 【发布时间】:2016-09-19 11:38:18 【问题描述】:

我有一个 2 字段组合,本地商店是从外部手动加载的。 我希望这个组合在我输入和过滤时处于展开状态。

我已经用过滤器设置了监听器。过滤器工作正常。

 this.listeners = 
        beforequery: function(queryPlan)
            me.store.clearFilter(true);
            me.store.filter(filter);
            return true;
        
    ;

问题是,当我开始输入组合时,有时它会在输入第一个字母后打开,然后折叠,即使有要显示的过滤值也是如此。我必须按下键才能看到过滤后的列表。

但是如果我通过退格键删除字符 - 它一直处于打开状态 - 实际上这就是我需要的。

我知道事件链有一些技巧,但无法确切了解如何操作。 手动调用 combo.expand() 无效。 如果我有 typeAhead=true 或者我没有,那是没有意义的。 可能这是因为我使用 displayTpl 而不是 displayField。

有什么想法吗? 提前谢谢你。

【问题讨论】:

这是我的解决方案。我在 BeforeExpand 事件中执行此操作。在那种情况下,我可以过滤商店。但问题是过滤后无法扩展...如果我想要过滤,我需要清除该组合的值 【参考方案1】:

不确定这是否是最佳解决方案,但您可以 getPicker()combo 并在其中添加显示/隐藏相关事件处理程序,并在其中添加隐藏/显示自定义逻辑(例如 beforehide 或任何其他符合你的逻辑)。

combo.getPicker().on(
    'beforehide',
    function() 
        // Your hide logic here
    
);

组合选择器组件是 Ext.view.Boundlist,因此在您的控制器中类似这样的东西也应该可以工作:

init: function () 
    this.control(
        'combo[name=myCombo] boundlist': 
            beforehide: this.myHandler
        
    );

Fiddle

【讨论】:

以上是关于分机 JS 组合。过滤时保持扩展的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我的分机是不是处于省电模式?

华为OD机试 - 过滤组合字符串(Java & JS & Python)

子组件通过父组件过滤时如何保持状态?

如何组合 2 个同位素过滤器 javascript 函数?

Ag-Grid 在与下拉列表交互期间保持自定义过滤器打开

ExtJS 组合框和过滤存储