1

我想知道是否有任何方法可以动态隐藏/显示 extjs 中组合框的触发器?

有人可以建议答案吗?

4

2 回答 2

2

那么你可以使用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);
于 2013-06-12T11:34:02.147 回答
1

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

于 2013-06-14T05:32:12.040 回答