2012-01-13 31 views
0

我使用Sencha Touch 1.1構建酒吧定位器。我使用CakePHP作爲我的後端API,我希望能夠使用Cake輸出它的數據。在使用CakePHP後端的Sencha Touch商店中嵌套的JSON對象API

查看下面的JSON數據,您會看到Pub數據以類似的方式返回到「Pub」數組和郊區。所以訪問數據將進行如下:

Pub.id, Pub.name, Pub.address_1 

有誰知道我可以在我的煎茶模型和存儲使用這種格式?

我有我的模型和存儲設置如下:

Ext.regModel('Pub', { 
    fields: ['id', 'name', 'address_1', 'address_2', 'marker', 'lat', 'lng', 'suburb'] 
}); 

Ext.regStore('NearbyStore', { 
    model: 'Pub', 
    sorters: 'suburb', 
    getGroupString: function(record) { 
     return record.get('suburb'); 
    }, 
    proxy: { 
     type: 'scripttag', 
     url: 'http://exampleurl/bars/nearby.json?lat=-55.8874&lng=-11.177', 
     reader: { 
      type: 'json', 
      root: 'results' 
     } 
    }, 
    autoLoad: true 
}); 

下面是從我的店裏代理返回JSON數據。

stcCallback1001({"results":[{"Pub":{"id":"125","name":"Brownsville Bowling & Recreation Club","address_1":"31a malouffst","address_2":"-","marker":"default_marker.png","lat":"-33.887402","lng":"151.177002"},"Suburb":{"name":"Knoxville"},"0":{"distance":"0.0002511751890598611"}},{"Pub":{"id":"1721","name":"Hampshire Hotel","address_1":"91 parramatta rd","address_2":"-","marker":"default_marker.png","lat":"-33.886799","lng":"151.177002"},"Suburb":{"name":"Brownsville"},"0":{"distance":"0.06684402352323478"}}]}); 

回答

0

你應該看到 http://docs.sencha.com/touch/1-1/#!/api/Ext.data.Field-cfg-mapping

計算器上類似的問題: Accessing nested objects in JSON feed - Sencha Touch

所以,你應該映射模型是這樣的:

Ext.regModel('Pub', { 
fields: [ 
{ 
    name: 'id', 
    type: 'string', 
    mapping: 'Pub.id' 
}, 
{ 
    name: 'name' 
    type: 'string', 
    mapping: 'Pub.name' 
}, 
{ 
    name: 'address_1', 
    type: 'string', 
    mapping: 'Pub.address_1' 
}, 
{ 
    name: 'AND SO ON.......' 
} 
}); 

好吧,我剛剛開始在sencha觸摸。所以我希望即時幫助.. :)

0

你不僅要做到這些,還要做地圖過濾,遠程排序,成功屬性,驗證錯誤等等。如果你正在計劃一個更大的項目,我會建議你切換到Sencha Touch 2並使用Bancha。

那麼你不必做任何這些事情。作爲一個很好的獎勵,您可以簡單地暴露您的CakePHP模型,而不必爲Sencha Touch再次手動編寫它們。