在 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 组合框 afterrender() 一起调用导致异步 ajax 调用