我正在创建一个包含通过xtype创建的项目的formpanel(不为每个项目调用new)。 我想在TextField的右边添加一个精度。
我设法通过设置一个包含TextField +标准Panel的CompositeField来实现,但有没有更好的方法,比如我错过的TextField属性或更好的选择?
感谢您的帮助! :)
new Ext.form.FormPanel ({
'id': 'create-form',
'header': true,
'headerAsText': true,
'hideCollapseTool': true,
'title': 'New Component',
'width': 550,
'style': 'margin: 100px auto',
'labelWidth': 200,
'items': [
{
'items': [
{
'xtype': 'textfield',
'fieldLabel': 'Duration (in hours)',
'name': 'name'
}
]
}
]
});
答案 0 :(得分:6)
如果只需要一个字段,CompositeField
就可以了。但是,你真的需要一个全新的Panel
文本 - 不会常规Label
吗?
如果您需要更可重用的解决方案,请查看FormLayout的fieldTpl
配置选项。您可以修改模板并在字段后面添加一个特殊部分,以显示其他信息。
答案 1 :(得分:3)
我不知道有一个属性可以通过右侧的面板做你想做的事。但是,如果这是你不止一次做的事情,请考虑为它制作自己的类型:
Ext.ns('Ext.ux.form');
Ext.ux.form.DurationField = Ext.extend(Ext.form.CompositeField, {
constructor: function(cfg) {
cfg = Ext.applyIf(cfg || {}, {
items: [ /** blah blah */ ]
});
Ext.ux.form.DurationField.superclass.constructor.call(this, cfg);
}
});
Ext.reg('durationfield', Ext.ux.form.DurationField);
这将让您使用durationfield
,就好像它是一等公民一样。
答案 2 :(得分:2)
您还可以在复合字段中使用Ext.form.DisplayField
(xtype
displayfield
)来显示一些静态文本。