1

こんにちは、Sencha Touch2は初めてです。ネストされたJsonデータを解析し、リストに表示しているときに問題が発生します。これが私のJsonのようです:

[{"task":
{"agent":{"activeFlag":"false",
    "shiftId":"0","id":"0","deleteFlag":"false"},
      "id":"124","status":"Unassigned",
    "assignment":{"pnr":
    {"locator":"ABCDEF","connectTime":"0","id":"0"},
        "id":"123",
        "alerts":"Delay"
        "customers":[
            {"frequentNumber":"12345",
                "doNotMissFlag":"false",
                "customerScore":"0",
                "lastName":"XYZ",
                "firstName":"ABC",
                "primaryFlag":"true",
                "customerId":"56789"},
             {"frequentNumber":"987654",
                 "doNotMissFlag":"false",
                 "customerScore":"0",
                 "lastName":"PQR",
                "firstName":"STU ",
                 "cartNumber":"0",
                 "primaryFlag":"false",
                 "customerId":"54321"}]},
  }},
    {"task":{"agent":{......

'agent'値、'assignment'値を取得できますが、'customers'を取得できません。こちらがモデルです。ModelList.js:

Ext.define('CustomList.model.ModelList', {
    extend: 'Ext.data.Model',
    xtype:'modelList',
    requires:['CustomList.model.Customers'],
    config: {
            fields:['task'],
        proxy:{
            type:'ajax',
            url:'http://localhost:9091/CustomListJson/app/store/sample.json',
            reader:{
            type:'json'

        }
    },
    hasMany:{model:'CustomList.model.Customers',
             name:'customers'}
    }

});

Customers.js:

Ext.define('CustomList.model.Customers', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'firstName','lastName'
        ],
        belongsTo: "CustomList.model.ModelList"
    }

});

これが私のShowList.jsです:

Ext.define('CustomList.view.ShowList',{
    extend:'Ext.Panel',
    xtype:'showList',
    config:{
        layout:'fit',
        styleHtmlContent:'true',
        styleHtmlCls:'showListCls',
        items:[
            {
                xtype:'list',
                id: 'listitems',
                store:'StoreList',
                itemTpl:['{task.assignment.alerts}', '<div>',
                    '<h2><b>FirstName: </b></h2>',
                    '<tpl for="Customers">',      // could not able to get and show in list
                    '<div> - {firstName}</div>',  // could not able to get and show in list
                    '</tpl>',
                    '</div>']
 // am able get the below values in list
//                itemTpl:'{task.assignment.alerts}'
//                itemTpl:'{task.assignment.pnr.locator}'
//                  itemTpl:'{task.agent.activeFlag}'
//                itemTpl: '<b>{firstName} {lastName}     </b><br>'+'pnr: '+ '{locator}  <br>' +
//                    'Alerts: <font color="#990000">'+'{alerts} </font>' +'status: '+'{status} '
               }]


    }
});

これが私のStoreList.jsです:

Ext.define('CustomList.store.StoreList', {
    extend:'Ext.data.Store',
    requires:['Ext.data.reader.Json'],
    config:{
        model:'CustomList.model.ModelList',
        autoLoad:'true'

    }
});

私はこれに従いました:http://docs.sencha.com/ext-js/4-0/# !/ api / Ext.data.reader.Reader が、リストに表示できませんでした。誰でも私を助けてください。ありがとう。

4

1 に答える 1

0

私は私の質問の解決策を得ました。ShowList.jsに変更を加えました:これを使用しました:

   itemTpl:['{task.assignment.alerts} <div>',
                    '<tpl for="task.assignment.customers">',
                    'firstName: {firstName}<br>',
                    '</tpl> </div>'
                ].join('')

上記を使用して、「顧客」のアイテムを表示できます。ありがとう。

于 2013-03-20T13:30:32.307 に答える