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

时间:2013-06-12 11:29:31

标签: extjs combobox

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

有人可以建议答案吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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