Sencha渲染多组件

时间:2014-07-29 11:04:36

标签: extjs

这有点难以解释。如果你看下面你会看到有效的JSON。

这是我的商店:

Ext.define('CPC.store.Website.StatisticChartByDate1', {
    extend: 'Ext.data.Store',
    fields: [
        ...
    ],
    proxy: {
        type: 'ajax',
        url: 'myurl',
        extraParams: {typeCP: Ext.util.Cookies.get('typeCP')},
        reader: {
            type: 'json',
            root: 'data.rows',
            metaProperty: 'data.statistic'
        }
    }
});

这是我的数据回复:

{
    "data":{
        'statistic': {...}
        'rows' : {...}
    }
}

如何为图表呈现rows,为下面的statistic呈现FieldContainer

1 个答案:

答案 0 :(得分:0)

你可以定义一个" master"行和统计信息的2 hasMany个关联模型。然后,主记录将为每个商店公开一个商店,您可以在您的视图/组件中使用它。要从主数据中读取hasMany关联,请使用关联的associationKey选项。

这是一个简短的例子:

Ext.define('App.model.Row', {
    extend: 'Ext.data.Model'
    ,fields: ['name']
});

Ext.define('App.model.Statistic', {
    extend: 'Ext.data.Model'
    ,fields: ['name']
});

Ext.define('App.model.Master', {
    extend: 'Ext.data.Model'

    // Don't forget requires if models are defined in different files
    ,requires: [
        'App.model.Row'
        ,'App.model.Statistic'
    ]

    ,fields: ['id']

    ,hasMany: [{
        name: 'rows'
        ,model: 'App.model.Row'
        ,associationKey: 'rows' // read association data from this node in the response
    },{
        name: 'statistics'
        ,model: 'App.model.Statistic'
        ,associationKey: 'statistics'
    }]

    ,proxy: {
        type: 'ajax'
        ,url: 'data1.json'
        ,reader: {
            type: 'json'
            ,rootProperty: 'data'
        }
    }
});

App.model.Master.load(1, { // use id if relevant or anything if the proxy does the job
    success: function(masterRecord) {
        var rowStore = masterRecord.rows(),
            statisticsStore = masterRecord.statistics();

        // Use these stores for your different usages
        // ...
    }
});