Это требует нескольких шагов. Проблема в том, что ComboBox
имеет поле ввода внизу, и входы не могут отображать HTML. Итак, первый шаг - изменить шаблон, который заменит ввод на div. Например:
fieldSubTpl: [
'<div class="{hiddenDataCls}" role="presentation"></div>',
'<div id="{id}" type="{type}" ',
'<tpl if="size">size="{size}" </tpl>',
'<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>',
'class="{fieldCls} {typeCls}" autocomplete="off"></div>',
'<div id="{cmpId}-triggerWrap" class="{triggerWrapCls}" role="presentation">',
'{triggerEl}',
'<div class="{clearCls}" role="presentation"></div>',
'</div>',
{
compiled: true,
disableFormats: true
}
]
Затем измените шаблон, который показывает выбранное значение:
displayTpl: Ext.create('Ext.XTemplate', [
'<tpl for=".">',
'<img src="http://phpbb3.pl/adm/images/icon_edit.gif" />',
'{[typeof values === "string" ? values : values["title"]]}',
'</tpl>'
])
Другое дело - создать новый шаблон элемента списка. Например:
listConfig: {
getInnerTpl: function() {
return '<div class="search-item">' +
'<h3><img src="http://phpbb3.pl/adm/images/icon_edit.gif" /><span>{[Ext.Date.format(values.lastPost, "M j, Y")]}<br />by {author}</span>{title}</h3>' +
'{excerpt}' +
'</div>';
}
}
И последнее - вы должны убедиться, что значение правильно установлено в div. Для этого вы должны переопределить setRawValue
метод:
setRawValue: function(value) {
var me = this;
value = Ext.value(value, '');
me.rawValue = value;
// Some Field subclasses may not render an inputEl
if (me.inputEl) {
// me.inputEl.dom.value = value;
// use innerHTML
me.inputEl.dom.innerHTML = value;
}
return value;
}
Обратите внимание, что новый шаблон не содержит поля input
, поэтому значение не будет отправлено. Если вам нужно использовать такую комбинацию с формой, вы должны добавить скрытый ввод где-нибудь в fieldSubTpl
и установить для него значение в setRawValue
.
Рабочий образец: http://jsfiddle.net/lolo/8Xs5h/1/