在ExtJS中,扩展对象时如何为嵌套元素指定默认配置?
使用ExtJS 4.1.3,我想创建一个通用的Ext.data.Store,以使用站点范围,作为多个页面的基础。以下是我的常用代码:在ExtJS中,扩展对象时如何为嵌套元素指定默认配置?,extjs,Extjs,使用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: '
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的方法,以便递归地合并配置。这可能吗?我已经研究了constructor config属性,但它似乎没有帮助。我的解决方案:
父类:
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'
}
}
}
});
您需要在
Common.data.Store
的构造函数中将它们合并在一起。我已经尝试过了,但是传入构造函数的配置参数似乎没有实现这一点所需的一切。@astonius您必须手动完成,Ext中没有递归合并这些属性的实用程序。@Andrei,我很好,但是我在哪里以及如何做呢?我建议你阅读这个论坛的规则。答案不会问其他问题。