1

Sencha Touch 2 プロジェクトのデータビューにネストされた JSON データを表示したいと考えています。JSON には、進行中のサービス リクエストの詳細が含まれています。

JSON:

{
    "success": true,
    "message": "Request retrieved with id:789",
    "data": {
        "id": 789,
        "description": "request description",
        "subject": "request subject",
        "progresses": [
            {
                "description": "progress description 1"
            },
            {
                "description": "progress description 2"
            },
            {
                "description": "progress description 3"
            }
        ]
    }
}

データを取得するために、requestdetails 用、progress 用、そしてもちろん store 用の 2 つのモデルがあります。

私の店:

Ext.define('MyApp.store.RequestStore', {
    extend: 'Ext.data.Store',
    requires: [
        'MyApp.model.RequestModel'
    ],
    config: {
        autoLoad: true,
        autoSync: true,
        model: 'MyApp.model.RequestModel'
    }
});

そして私のモデル:

Ext.define('MyApp.model.RequestModel', {
    extend: 'Ext.data.Model',
    uses: [
        'MyApp.model.ProgressModel'
    ],
    config: {
        fields: [
            {
                name: 'id'
            },
            {
                name: 'description'
            },
            {
                name: 'subject'
            }
        ],
        hasMany: {
            associationKey: 'progresses',
            model: 'MyApp.model.ProgressModel'
        },
        proxy: {
            type: 'rest',
            url: 'http://myurl.com/rest/request/789',
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        }
    }
});

Ext.define('MyApp.model.ProgressModel', {
    extend: 'Ext.data.Model',
    uses: [
        'MyApp.model.RequestModel'
    ],
    config: {
        fields: [
            {
                name: 'description'
            }
        ],
        belongsTo: {
            model: 'MyApp.model.RequestModel'
        }
    }
});

これは私の見解です:

Ext.define('MyApp.view.MyDataView', {
extend: 'Ext.dataview.DataView',

config: {
    store: 'RequestStoreId',
    itemTpl: [
        '<div>',
        '   <div>ID</div>',
        '   <div>{id}</div>',
        '           ',
        '   <div>Subject</div>',
        '   <div>{subject}</div>',
        '           ',
        '   <div>Description</div>',
        '   <div>{description}</div>',
        '</div>',
        '',
        '<h2><b>Progress:</b></h2>',
        '<tpl for="progressmodels">',
        '    <div>',
        '        <div>{description}</div>',
        '    </div>',
        '</tpl>'
    ]
}
});

idrequestTypedescriptionおよび を表示すると正常にsubject動作します。進行状況の場合、すべての進行状況の説明を表示したいのですが、最初の説明のみが表示されるようになりました。

私はそれを解決するために多くのことを試し、インターネットを検索しましたが、それが何であるかわかりません。

ここで何が間違っていますか?私は何かが恋しいですか?同じ問題を抱えている人はいますか?

前もって感謝します!

4

1 に答える 1

0

交換する

<tpl for="progressmodels">

<tpl for="progresses">

私のために働いた。ノードは、progressesループしたいノードです。唯一の欠点は、ノード内のデータをモデルで変換できないことです。私の知る限り、XTemplateでこれを行う必要があります:)

これが誰かを助けることを願っています!

于 2012-10-04T09:25:37.643 に答える