Sencha touch 以MVC方式从许多模型中生成Ext.dataview.List中的项

Sencha touch 以MVC方式从许多模型中生成Ext.dataview.List中的项,sencha-touch,Sencha Touch,我有一个博客模型,其中有许多帖子(以及许多其他字段)。现在我想在列表中列出这些帖子,如下所示: [我的帖子#1] [我的帖子#2] [我的帖子#3] 正如API所描述的,我能够将存储或数据属性传递给Ext.dataview.List。但我无法找到如何将hasmall记录传递到列表,以便它为每个记录显示一个项目 我真的需要再开一家店吗?是否可以将我的dataview配置为类似于存储:“Blog.posts”或数据:“Blog.posts”或甚至记录:“Blog.posts”?扩展datavie

我有一个
博客
模型,其中有许多
帖子
(以及许多其他字段)。现在我想在
列表中列出这些帖子,如下所示:

  • [我的帖子#1]
  • [我的帖子#2]
  • [我的帖子#3]
正如API所描述的,我能够将存储或数据属性传递给Ext.dataview.List。但我无法找到如何将hasmall记录传递到列表,以便它为每个记录显示一个项目


我真的需要再开一家店吗?是否可以将我的dataview配置为类似于
存储:“Blog.posts”或
数据:“Blog.posts”或甚至
记录:“Blog.posts”

扩展dataview.List以定义要在帖子中循环的itemtpl

itemTpl: new Ext.XTemplate(
    '<tpl for="**posts**" >',
        '<div>{TheBlogPost}</div>',
            '</tpl>'
)
itemTpl:new Ext.XTemplate(
'',
“{TheBlogPost}”,
''
)

正如@Adam Marshall所说,这并不像我想象的那么容易。

如果您知道如何访问关联,Sencha会自动从关联中生成存储。 因此,在加载自动生成的“子存储”时,您只需切换列表的存储即可

这种方法可能有一些问题,例如,当使用listpaging插件时,但是它很快

例如:

型号

Ext.define('Conversation', {
extend: 'Ext.data.Model',
config: {
    fields: [

    ],
    associations:
        [
            {
                type: 'hasMany',
                model: "Message",
                name: "messages",
                associationKey: 'messages'
            }
        ]
}
});

Ext.define('Message' ,
{
    extend: "Ext.data.Model",
    config: {
        idProperty: 'id_message',
        fields: [
            { name: 'text', type: 'string' },
            { name: 'date', type: 'string' },
            { name: 'id_message', type: 'int' },
            { name: 'me', type: 'int'} // actually boolean
        ]
    }
}
    );
JSON

 [
{
    "messages": [

    {"id_message": 11761, "date": 1378033041, "me": 1, "text": "iiii"},
    {"id_message": 11762, "date": 1378044866, "me": 1, "text": "hallo"}
]}
]
控制器

        this.getList().getStore().load(
            {
                callback: function(records, operation, success) {

//IMPORTANT LINE HERE:
getList().setStore(Ext.getStore(me.getList().baseStore).getAt(0).messages());

                },
                scope: this
            }

        );
列表视图

                            {
                                flex: 1,
                                xtype: 'list',
                                itemId: 'ConversationList',
                                data: [],
                                store: 'ConversationStore',
                                baseStore: 'ConversationStore',
                                itemTpl:
                                        '                {[app.util.Helpers.DateFromTimestamp(values.date)]}<br><b>{name}</b>' +
                                        '           {[app.util.Helpers.fixResidualHtml(values.text)]} </div>' +
                            },
{
弹性:1,
xtype:'列表',
itemId:'会话列表',
数据:[],
store:“ConversationStore”,
baseStore:'ConversationStore',
第三方物流:
“{[app.util.Helpers.DateFromTimestamp(values.date)]}
{name}”+ “{[app.util.Helpers.fixrisdualhtml(values.text)]”+ },
但我只有一个项目(将我的帖子作为内部HTML列出),对吗?什么,如果我想每个帖子都有一个项目?对不起,是的,你是对的,我查看了dataview代码,但没有什么突出的。除了创建一个新的商店,或者让商店超载以报告更多的商品,我认为你正在尝试做的事情是做不到的。