1

BloghasMany Posts(および他の多くのフィールド)を持つモデルがあります。List今、私はこれらの投稿を次のようなビューにリストしたいと思います。

  • [私の投稿#1]
  • [私の投稿#2]
  • [私の投稿#3]

説明されているAPIに関する限り、ストアまたはデータ属性のいずれかをExt.dataview.Listに渡すことができます。しかし、hasManyレコードをリストに渡す方法がわからなかったため、各レコードのアイテムが表示されます。

本当に別の店を作る必要がありますか?データビューをまたはのようなものに構成することはできませんstore: 'Blog.posts'か?data: 'Blog.posts'records: 'Blog.posts'

4

3 に答える 3

0

@Adam Marshallが言ったように、これは私が想像したほど簡単には機能しません。

于 2012-12-16T14:19:28.643 に答える
0

dataview.Listを拡張して、投稿をループするitemtplを定義します

itemTpl: new Ext.XTemplate(
    '<tpl for="**posts**" >',
        '<div>{TheBlogPost}</div>',
            '</tpl>'
)
于 2012-12-10T04:43:24.743 に答える
0

あなたがそれらにアクセスする方法を知っているならば、Senchaは協会から店を自動生成します。したがって、リストのストアがロードされたら、自動生成された「サブストア」に切り替えることができます。

このアプローチには、たとえばリストページングプラグインを使用する場合など、おそらくいくつかの問題がありますが、迅速です。

例:

モデル

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>' +
                            },
于 2013-10-04T19:25:02.047 に答える