Sencha Touch 2:同一商店中的两个REST请求

时间:2015-01-11 11:51:54

标签: ajax json rest extjs sencha-touch

是否可以在同一商店中以某种方式包含多个rest / json请求?

例如,我有这个返回json对象的api:

http://api1.domain.com

{"name":"john"},{"name:"harry"}

http://api2.domain.com

{"name":"peter"},{"name:"fred"}

我想将api1和api2的结果合并到一个商店中,以便在单个视图中处理所有连接。结果:

{"name":"john"},{"name:"harry"},{"name":"peter"},{"name:"fred"}

或者可能没有连接,但我可以在一个视图中显示同时调用这两个api: 约翰 掠夺 彼得 fred的

这可能吗?

我尝试这个没有成功:

Ext.application({
    name: 'sencha',
    views: ['Main1'],
    models:['AdModel'],
    stores:['AdStore1','AdStore2'],
    launch: function () {

    var store1Obj = Ext.getStore('AdStore1');
    var store2Obj = Ext.getStore('AdStore2');

    store1Obj.each(function(record){
        var copiedRecord = record.copy();
    store2Obj.add(copiedRecord);
    });

    Ext.create('Ext.DataView', {
        fullscreen: true,
        store: store2Obj,
        itemTpl: '<tpl for="."><div><strong>{name}</strong></div></tpl>'
        });
    }

});

1 个答案:

答案 0 :(得分:0)

首先,您对each http://docs-origin.sencha.com/touch/2.4/2.4.1-apidocs/#!/api/Ext.data.Store-method-each

store方法使用了错误的语法

然后在同一个商店中将两个不同的数据源一起添加就很简单。

Ext.application({
    name: 'Fiddle',

    launch: function() {

        // Set up a model to use in our Store
        Ext.define("User", {
            extend: "Ext.data.Model",
            config: {
                fields: [{
                    name: "name",
                    type: "string"
                }]
            }
        });

        // Setup the stores
        var myStore1 = Ext.create("Ext.data.Store", {
            model: "User",
            data: [{
                "name": "john"
            }, {
                "name": "harry"
            }],
            autoLoad: true
        });

        var myStore2 = Ext.create("Ext.data.Store", {
            model: "User",
            data: [{
                "name": "peter"
            }, {
                "name": "fred"
            }],
            autoLoad: true
        });

        // Loop through each record of store2 adding it to store1
        myStore2.each(function(item, index, length) {
            myStore1.add(item);
        });

        Ext.create("Ext.List", {
            fullscreen: true,
            store: myStore1,
            itemTpl: "{name}"
        });
    }
});

演示:https://fiddle.sencha.com/#fiddle/g6n