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でラップするだけでは不可能です。
ヘルプや提案をありがとうございます。