使用CakePHP后端API在Sencha Touch store中嵌套JSON对象

使用CakePHP后端API在Sencha Touch store中嵌套JSON对象,json,cakephp,extjs,Json,Cakephp,Extjs,我正在使用Sencha Touch 1.1构建一个酒吧定位器。我使用CakePHP作为我的后端API,我希望能够使用数据作为它的输出 查看下面的JSON数据,您将看到Pub数据以类似的方式返回到“Pub”数组和郊区。因此,访问数据的方法如下: Pub.id, Pub.name, Pub.address_1 Ext.regModel('Pub', { fields: ['id', 'name', 'address_1', 'address_2', 'marker', 'lat', 'ln

我正在使用Sencha Touch 1.1构建一个酒吧定位器。我使用CakePHP作为我的后端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
});
有人知道我如何在Sencha模型和存储中使用这种格式吗

我的型号和门店设置如下:

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"}}]});
你应该看到

关于堆栈溢出的类似问题:

因此,您应该像这样映射您的模型:

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 touch。所以我希望我能帮上忙……)

您不仅需要进行这些操作,还需要进行映射筛选、远程排序、成功属性、验证错误等操作。如果你正在计划一个更大的项目,我建议你切换到Sencha Touch 2并使用Bancha

那么你就不必做这些事情了。作为一个不错的奖励,您可以简单地公开您的CakePHP模型,而不必为Sencha Touch再次手动编写它们