在 extjs 中为组合框动态隐藏/显示触发器

Posted

技术标签:

【中文标题】在 extjs 中为组合框动态隐藏/显示触发器【英文标题】:hiding/showing trigger dynamically for a combobox in extjs 【发布时间】:2013-06-12 11:29:31 【问题描述】:

我想知道有没有办法在 extjs 中动态隐藏/显示组合框的触发器?

谁能给出答案?

【问题讨论】:

【参考方案1】:

您可以使用组合框的hideTrigger 配置属性。如果您需要在呈现组合后动态执行此操作,您可以执行以下操作:

(以下是这样做的,因为一个错误会在使用多个触发器时弄乱宽度。最后一个已知的错误版本 4.1.3)

onShowTrigger: function (show) 
    if (show) 
        this.triggerEl.each(function (el, c, i) 
            if (i === 0)  // the ident of the trigger. will start with 0
                el.setWidth(el.originWidth, false);
                el.setVisible(true);
            
        );
     else 
        this.triggerEl.each(function (el, c, i) 
            if (i === 0) 
                el.originWidth = el.getWidth();
                el.setWidth(0, false);
                el.setVisible(false);
            
        );
    
    // Version specific methods
    if (Ext.lastRegisteredVersion.shortVersion > 407) 
        this.updateLayout();
     else 
        this.updateEditState();
    

退出

上面的代码应该在一个组合框的扩展中实现,比如

Ext.define('Ext.ux.form.field.CustomCombo', 
    extend: 'Ext.form.field.ComboBox',
    alias: 'widget.customcombo',

    onShowTrigger: function (show) 
        //...
    
);

在哪里可以自己调用这个方法

var combo = Ext.widget('customcombo');
combo.onShowTrigger(false);

【讨论】:

我能知道监听器 onShowTrigger 可用于组合框吗? 感谢 Sra 的帮助。我刚刚包含了“combo.triggerEl.hide()”/“combo.triggerEl.show()”这一行。它对我有用。 @ramyasri 好吧,上面的这个解决方案适用于所有低于 4.2 的版本,因为如果有多个触发器,就会出现一个错误,导致大小混乱【参考方案2】:

我使用了 combo.triggerEl.hide() 或 combo.triggerEl.show()。它对我有用。感谢 Sra 的帮助。

【讨论】:

以上是关于在 extjs 中为组合框动态隐藏/显示触发器的主要内容,如果未能解决你的问题,请参考以下文章

在 EXTJS 中为同一个选择器使用不同的事件

ExtJS 动态更改组合框项的值

extjs 组合框 afterrender() 一起调用导致异步 ajax 调用

Extjs - 如何在Grid列中显示组合框

elementUI 下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)

elementUI 下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)