我正尝试在组件中创建项目,因为它是通过函数进行初始化的。在初始化函数中定义对象的条目
考虑以下几点:
Ext.define('mobi.form.Login',{
extend:'Ext.form.Panel',
config:{
items: [{
xtype: 'textfield',
name: 'Name',
label: 'Name'
}]
});
Ext.application({
viewport: {
layout:'fit'
},
launch: function(){
Ext.Viewport.add(Ext.create('mobi.form.Login'));
}
})
我试图让mobi.form.login
产生从上initialize
运行(或者任何我可以用它来写上我指定的配置)的函数其配置。
我知道煎茶触摸2有constructor
和initialize
功能,但他们两人似乎都arguments=[]
(如一个空数组)
这或多或少会怎么看,如果我在做这件事ExtJS的4.x版:
Ext.define('mobi.form.Login',{
extend:'Ext.form.Panel',
initComponent:function(config){
config=Ext.apply({}.config,{});//make sure config exists
config.items= [{
xtype: 'textfield',
name: 'Name',
label: 'Name'
}]
Ext.apply(this, config);
this.callParent(arguments);
}
});
如果你真的想这样做,你可以在'constructor'中完成。它将你传递给Ext.create()的配置链接到'initComponent',这样你就可以使用上面使用的完全相同的代码。但问题是,你为什么想做这个?我们希望使用2.x使配置系统尽可能灵活,所以我们引入了'config'块,以便不再需要initComponent。在什么情况下你不能使用'config'? – rdougan 2012-03-16 22:16:47
虽然构造函数没有参数,这很奇怪吗? Ext.define里面的配置不允许你引用'this'作为面板的范围,这意味着你必须定义一个控制器只是为了在表单上执行this.reset()。 Mitchell Simoens有一些类似于我在他的网格扩展中所做的事情(我认为)。 https://github.com/mitchellsimoens/Ext。ux.touch.grid/blob/master/Ext.ux.touch.grid/View.js,但是他所做的一切都可以在文档中找到(除非我是盲人)。 – Alex 2012-03-17 14:27:19
另一个我头顶的例子就是定义一个表单,它在init(这对表单很有趣)中执行ajax调用来获得它的配置。 – Alex 2012-03-17 14:30:36