Ответ 1
Это должно решить вашу проблему:
'<tpl switch="post_type">',
'<tpl case="new_user">',
'<p>{post_text_teaser}</p>',
'<p>{timestamp}</p>',
'<tpl default>',
'<p>{[Ext.String.ellipsis(values.post_text_teaser,4,false)]}</p>',
'</tpl>'
вы можете найти дополнительную информацию о XTemplate в Sencha Docs
Вещь с функцией члена-шаблона заключается в том, что, насколько я знаю, вы не можете определить их непосредственно в itemTpl обычным способом, но вам нужно явно определить новый XTemplate, а затем использовать его в вашем itemTpl. Пример:
var tpl = new XTemplate(
'<tpl switch="post_type">',
'<tpl case="new_user">',
'<p>{post_text_teaser}</p>',
'<p>{timestamp}</p>',
'<tpl default>',
'<p>{[this.shorten(values.post_text_teaser)]}</p>',
'</tpl>',
{
shorten: function(name){
return Ext.String.ellipsis(name,4,false);
}
}
);
...
itemTpl: tpl,
...
Это должно работать нормально, как и код ниже (просто вставьте код из XTemplate выше).
itemTpl: new XTemplate(...),
Надеюсь, что это разобьет!
edit заметил, что я пропустил закрывающие теги, иногда это работает без них, но хорошая практика всегда их использовать, поскольку они могут вызвать интересные ошибки (в этом случае отсутствует скобка на сгенерированном код).