使用ExtJS 4.1.3,我想创建一个公共Ext.data.Store,以便在整个站点范围内使用它作为多个页面的基础。这是我的常用代码:
Ext.define('Common.data.Store', {
extend: 'Ext.data.Store',
pageSize: 50,
proxy: {
type: 'ajax',
timeout: 1000 * 120,
reader: {
type: 'json',
totalProperty: 'results'
}
}
});
然后,我扩展Common.data.Store并仅配置页面唯一的那些字段:
Ext.define('Test.store.Test', {
extend: 'Common.data.Store',
model: 'testModel',
proxy: {
api: {
read:'/test/getTest/'
},
reader: {
root: 'test'
}
}
});
问题是配置没有递归合并,因此公共存储扩展中的嵌套配置完全覆盖了公共存储的嵌套配置。我需要知道一种基本上在配置上执行Ext.apply的方法,以便递归地合并配置。这可能吗?我已经查看了构造函数配置属性,但它似乎没有帮助。
答案 0 :(得分:0)
我的解决方案:
父类:
Ext.define('Common.data.Store', {
extend: 'Ext.data.Store',
config: {
pageSize: 50,
proxy: {
type: 'ajax',
timeout: 120000,
reader: {
type: 'json',
totalProperty: 'results'
}
}
},
constructor: function(config)
{
this.initConfig(Ext.merge(JSON.parse(JSON.stringify(Common.data.Store.prototype.getInitialConfig())), Ext.merge(JSON.parse(JSON.stringify(this.getInitialConfig())), config)));
this.callParent(arguments);
}
});
儿童班:
Ext.define('Test.store.Test', {
extend: 'Common.data.Store',
model: 'Test.model.Test',
config: {
proxy: {
api: {
read:'/test/getTest/'
},
reader: {
root: 'test'
}
}
}
});