Я хотел знать, как настроить содержимое ListItem, комбинируя разные поля данных JSON.
У меня есть три поля JSON: {caption}, {subCaption}, {source}.
До сих пор я мог использовать dataMap и использовать пользовательские классы, чтобы обернуть дополнительный текст и стиль вокруг каждого. Однако единственный способ, которым я смог добавить контент, — это сделать это последовательно с использованием функций применения/обновления. В результате мои ListItems просто {caption}, {subCaption}, {source} в своих собственных строках.
Вот как я хотел бы, чтобы каждый ListItem выглядел так:
- Объедините текст {caption} и {subCaption}, создайте короткий рассказ и добавьте его как панель в ListItem.
- Визуализируйте {source} на небольшой панели, закрепленной в правом нижнем углу панели, созданной на шаге 1.
Как я могу сделать выше? Уточненный вопрос: как я могу получить доступ и объединить данные из разных полей JSON и отобразить их в ListItem?
Мой текущий код для ListItem скопирован ниже для справки.
Как всегда, любая помощь приветствуется! Спасибо!
Мохаммад
Сан-Хосе, Калифорния
Ext.define('qxtapp.view.ResultsListItem', {
extend: 'Ext.dataview.component.ListItem',
requires: [
'qxtapp.view.ResultsListItemCaption'
],
xtype : 'resultslistitem',
alias : 'widget.resultslistitem',
config: {
caption: true,
subCaption: true,
source: true,
dataMap: {
getCaption: {
setHtml: 'caption'
},
getSubCaption: {
setHtml: 'subCaption'
},
getSource: {
setHtml: 'source'
}
},
layout: {
type: 'vbox'
}
},
applyCaption: function(config) {
return Ext.factory(config, qxtapp.view.ResultsListItemCaption, this.getCaption());
},
updateCaption: function(newCaption) {
if (newCaption) {
this.add(newCaption);
}
},
applySubCaption: function(config) {
return Ext.factory(config, Ext.Component, this.getSubCaption());
},
updateSubCaption: function(newSubCaption) {
if (newSubCaption) {
this.add(newSubCaption);
}
},
applySource: function(config) {
return Ext.factory(config, Ext.Component, this.getSource());
},
updateSource: function(newSource) {
if (newSource) {
this.add(newSource);
}
}
});
Ext.define('qxtapp.view.ResultsListItemCaption', {
extend: 'Ext.Component',
applyHtml: function(caption) {
// do some customization to caption and return it
return caption;
}
});