我对自定义 Extjs 触发字段很感兴趣,我想知道执行以下操作的最佳方法是什么(请原谅文本图)(方括号代表元素):
[field label] [trigger element] [button]
它基本上是一个触发器字段,其末尾附加了一个小按钮。我希望只是扩展触发字段,并可能通过 fieldSubTpl 添加按钮,即:
fieldSubTpl: [
'<input id="{id}" type="{type}" ',
'<tpl if="name">name="{name}" </tpl>',
'<tpl if="size">size="{size}" </tpl>',
'<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>',
'class="{fieldCls} {typeCls}" autocomplete="off" />',
'<div id="{cmpId}-triggerWrap" class="{triggerWrapCls}" role="presentation">',
'{triggerEl}',
'{buttonEl}', <--- New Button Element
'<div class="{clearCls}" role="presentation"></div>',
'</div>',
{
compiled: true,
disableFormats: true
}
]
我现在希望能够在字段的构造函数中创建一个 Ext.Button,并以某种方式将它用于 {buttonEl}。完整示例:
Ext.define("Ext.ux.NewField", {
extend: "Ext.form.field.Trigger",
constructor: function(config) {
config.newButton = Ext.create("Ext.button.Button", {
/** ... button configs ... **/
});
Ext.applyIf(config, {
fieldSubTpl: // as shown above
});
this.callParent([config]);
},
initComponent: function() {
this.callParent();
this.newButton.on("click", this.__onButtonClick, this);
},
getSubTplData: function() {
var obj = this.callParent(arguments);
obj.buttonEl = this.newButton.??????? <-- This is what I can't figure out
return obj;
},
__onButtonClick: function() {
// ...
}
});
我将如何应用默认的 Ext 按钮配置以及我在按钮构造函数中覆盖的那些?这甚至可能还是我在这里使用模板完全错误?
同样,我想保持 Ext 字段的“is-a”关系,因此仅将触发器字段和按钮包装在 Ext.container.Container 中对我来说是不可能的。
感谢您提供任何帮助或建议。