Templates Ext.form.ComboBox:使用displayField的模板

Templates Ext.form.ComboBox:使用displayField的模板,templates,combobox,extjs,datastore,Templates,Combobox,Extjs,Datastore,有没有办法将模板应用于组合框的选定值?我正在使用一个模板来显示ComboBox的下拉值,但只要我选择一个,就会显示数据存储中的普通值 { id: 'requestStatusCombo', hiddenName: 'requestStatus', tpl: '<tpl for="."><div class="x-combo-list-item">{statusCode:requestStatus}

有没有办法将模板应用于组合框的选定值?我正在使用一个模板来显示ComboBox的下拉值,但只要我选择一个,就会显示数据存储中的普通值

{
  id:               'requestStatusCombo',
  hiddenName:       'requestStatus',
  tpl:             '<tpl for="."><div class="x-combo-list-item">{statusCode:requestStatus}</div></tpl>',
  fieldLabel:       'Status',
  xtype:             'combo',
  mode:           'local',
  triggerAction:     'all',
  store:             new Ext.data.ArrayStore({
      fields:       ['statusCode'],
      data:       [['unassigned'],['assigned'],['closed']]
  }),
  valueField:       'statusCode',
  displayField: 'statusCode'
}
{
id:'requestStatusCombo',
hiddenName:“请求状态”,
tpl:“{statusCode:requestStatus}”,
fieldLabel:“状态”,
xtype:'组合',
模式:“本地”,
触发动作:“全部”,
存储:新Ext.data.ArrayStore({
字段:['statusCode'],
数据:['unassigned'],['assigned'],['closed']]
}),
valueField:'状态代码',
显示字段:“状态代码”
}
我想使用格式函数
requestStatus
statusCodes
转换为语言环境特定的状态名称,这对下拉列表很有效,但只要我选择了某个内容,就会显示
statusCode

{
  id:               'requestStatusCombo',
  hiddenName:       'requestStatus',
  tpl:             '<tpl for="."><div class="x-combo-list-item">{statusCode:requestStatus}</div></tpl>',
  fieldLabel:       'Status',
  xtype:             'combo',
  mode:           'local',
  triggerAction:     'all',
  store:             new Ext.data.ArrayStore({
      fields:       ['statusCode'],
      data:       [['unassigned'],['assigned'],['closed']]
  }),
  valueField:       'statusCode',
  displayField: 'statusCode'
}
那么,是否可以将模板分配给displayField,或者对数据存储进行一些简单的批量修改?也许是通过读卡器处理输入?是否还有另一个
关键字会导致这种情况发生


我正在寻找一些利用Ext库的简单方法。如果唯一的解决方案是预处理数据,我自己就可以做到。

检查生成的DOM您会注意到,虽然列表元素是div,但字段本身是html输入元素。输入元素中不能有HTML。。。所以不。。。这里没有xtemplate

这并不意味着不能通过扩展Ext.form.ComboBox(或者Ext.Component)来实现这一点。

我找到了一个解决方案

我更改了数据存储,并添加了一个读卡器,以使用转换函数预处理状态:

{
  id:               'requestStatusCombo',
  hiddenName:       'requestStatus',
  fieldLabel:       'Status',
  xtype:             'combo',
  mode:           'local',
  triggerAction:     'all',
  store:             new Ext.data.Store({
      data:       [['unassigned'],['assigned'],['closed']],
      reader:       new Ext.data.ArrayReader({},[
          {name: 'statusCode',   mapping: 0},
          {name: 'displayname', mapping: 0, convert: function(statusCode) {
              return Ext.util.Format.requestStatus(statusCode);
          }}
      ])
  }),
  valueField:       'statusCode',
  displayField:   'displayname'
}