2012-01-13 60 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再次手动编写它们。