Extjs-使用自定义配置检索xtype
我定义了一个xtype:Extjs-使用自定义配置检索xtype,extjs,extjs4,extjs4.2,Extjs,Extjs4,Extjs4.2,我定义了一个xtype: Ext.define('Sample.view.CustomTextfield', { extend: 'Ext.field.Text', customConfig: 'foo' . . . . }); 我现在想知道是否有使用customConfig创建组件的方法 执行类似于myPanel.add(Ext.getComponentByConfig('customConfig','foo'))的操作 是否有一个extjs可以这样做 注意: 自定义组件尚未呈现
Ext.define('Sample.view.CustomTextfield', {
extend: 'Ext.field.Text',
customConfig: 'foo'
. . . .
});
我现在想知道是否有使用customConfig
创建组件的方法
执行类似于myPanel.add(Ext.getComponentByConfig('customConfig','foo'))的操作代码>
是否有一个extjs可以这样做
注意:
自定义组件尚未呈现,但已定义,因此使用ComponentQuery
等(.up()
,.down()
等)进行回答是不正确的
编辑:
下面是一个示例用例:
var myArray = [
{ config: 'customConfig', value: 'foo' },
{ config: 'anotherCustomConfig', value: 'bar' },
. . . .
];
for (var i = 0, l = myArray.length; i < l; i++) {
var obj = myArray[i];
myPanel.add(Ext.createBy(obj.config, obj.value);
}
假设您有一个对象键值对数组:
var myArray = [
{ config: 'customConfig', value: 'foo' },
{ config: 'anotherCustomConfig', value: 'bar' },
. . . .
]
现在,我需要做的是在数组上循环并检索config
属性,然后使用该属性检索具有该配置的xtype,其值等于value
,即,对于configcustomConfig
,其值为foo
。简而言之,我希望使用config->value
对象数组动态呈现视图。如果您的目标是向面板添加自定义组件,则可以使用Ext.define中的alias属性并使用小部件名称添加它
Ext.define('Sample.view.CustomTextfield', {
extend: 'Ext.field.Text',
alias: 'widget.foo'
. . . .
});
在myPanel中,添加以下组件:
myPanel.add({ xtype :'foo',});
这是我的想法。我不知道这是否是正确的方法,但无论如何我都会分享。请随时改进:
Ext.createBy = function (config, value) {
var classes = Ext.ClassManager.classes;
for (var cls in classes) {
if (classes.hasOwnProperty(cls)) {
var c = classes[cls];
if ((c[config] && c[config] === value) || (c.prototype && c.prototype[config] && c.prototype[config] === value)) {
return Ext.create(classes[cls].getName());
}
}
}
}
此函数,Ext.createBy
所做的是迭代Ext.ClassManager
所持有的类,并检查该类是否具有config
和参数中提供的值。然后使用通过测试的调用Ext.create
可以这样使用:
myPanel.add(Ext.createBy('someConfig','someValue')代码>
或者,关于我的示例用例:
var myArray = [
{ config: 'customConfig', value: 'foo' },
{ config: 'anotherCustomConfig', value: 'bar' },
. . . .
];
for (var i = 0, l = myArray.length; i < l; i++) {
var obj = myArray[i];
myPanel.add(Ext.createBy(obj.config, obj.value);
}
var myArray=[
{config:'customConfig',value:'foo'},
{config:'anotherCustomConfig',值:'bar'},
. . . .
];
for(var i=0,l=myArray.length;i
这将根据config->value
动态地将项目添加到myPanel
中,我已经知道,但是我需要的是仅使用customConfig
实例化组件,您使用的是哪个extjs版本?我的帖子被精确地标记为extjs4.2
.4.2.1。您的问题没有真正意义。@EvanTrimboli,请看editStill还是没有意义。我问题的哪一部分对你来说没有意义?你能详细解释一下吗?