我正在使用添加到模型中的 JSON 数据记录中的自定义字段对商店进行分组:
Ext.define('SCB.RMWB.InfoBar.Model.Message', {
extend: 'Ext.data.Model',
idProperty: 'Message',
fields: [
{name: 'id', type: 'int'},
{name: 'source', type: 'string'},
{name: 'target', type: 'string'},
{name: 'sourceType', type: 'string'},
{name: 'redirectUrl', type: 'string'},
{name: 'message', type: 'string'},
{name: 'targetType', type: 'string'},
{name: 'messageType', type: 'string'},
{name: 'sentDate', type: 'int'},
{name: 'notificationType', type: 'string'},
{name: 'parameters', type: 'string'},
{name: 'read', type: 'boolean'},
{name: 'readDate', type: 'int'},
{
name: 'dateGroup',
type: 'string',
convert: function(value, record) {
var formattedSentDate = dateHelpers.format(record.get('sentDate')),
str = '';
if (formattedSentDate === dateHelpers.today()) {
str = 'Today';
} else if (formattedSentDate === dateHelpers.yesterday()) {
str = 'Yesterday';
} else {
str = 'Last week';
}
return str;
}
}
],
validations: [
{type: 'presence', field: 'id'},
{type: 'presence', field: 'source'},
{type: 'presence', field: 'target'},
{type: 'presence', field: 'sourceType'},
{type: 'presence', field: 'redirectUrl'},
{type: 'presence', field: 'message'},
{type: 'presence', field: 'targetType'},
{type: 'presence', field: 'messageType'},
{type: 'presence', field: 'sentDate'},
{type: 'presence', field: 'notificationType'},
{type: 'presence', field: 'parameters'},
{type: 'presence', field: 'read'},
{type: 'presence', field: 'readDate'},
{type: 'presence', field: 'dateGroup'}
]
});
所以很明显,所需的分组是今天、昨天和上周。
这似乎工作正常,但我需要以手风琴方式呈现分组,标题表示分组。
目前,模板每次都输出日期分组,我需要一次分组标题,然后是属于该分组的那些记录。
这是当前模板:
'<tpl for=".">',
'<li class="view-all-details">',
'<h3>{dateGroup}</h3>',
'<div>',
'<p>{[ Ext.util.Format.ellipsis(values.message, 100, true) ]}</p>',
'<span class="time-frame">{[ SCB.RMWB.Infobar.utils.dateRangeMsg(values.sentDate) ]}</span>',
'</div>',
'</li>',
'</tpl>'
我知道模板当前不会输出我需要的内容,但不确定如何将视图中的记录与标题分组。