Sencha Touch2:解析嵌套的Json数据

问题描述:

您好新Sencha Touch2,解析嵌套的Json数据并在列表中显示时遇到问题。 这里是我的Json样子:Sencha Touch2:解析嵌套的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":{...... 

时能得到“代理人”的价值观,“分配”值,但没能得到“客户”。 这里是模型。 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 但无法显示在列表中。谁能帮帮我吗。谢谢。

+0

而不是列表,尝试嵌套列表 – 1Mayur 2013-03-20 07:34:15

+0

你能否建议我在我的代码上面的变化? – chipmunk 2013-03-20 09:08:16

+0

@chipmunk你可以请一些想法如何从json获得所有数据我也陷入了同样类型的问题 – surhidamatya 2013-07-12 03:48:16

我得到了我的问题的解决方案。使用以上我可以显示的“客户”的项目

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

: 我ShowList.js所做的更改: 用这个。谢谢。

+0

你能告诉我你是如何从你的json获得代理和赋值的吗? – Tejas 2013-03-21 09:50:14