1

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

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

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

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

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

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

有任何想法吗 ?先感谢您。

4

1 回答 1

0

不确定它是否是最佳解决方案,但您可以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
        }
    });
}

小提琴

于 2016-05-24T10:18:58.200 回答