Forms 带有数组名的ExtJS表单
我不会构建一个用户联系人表单,其中有两个选项卡包含相同的字段,但使用不同的语言。使用MVC和ExtJS4.0.7 我不想重复使用userinfo面板。。只需给它一个参数 包含用户信息的选项卡小部件如下所示:Forms 带有数组名的ExtJS表单,forms,model-view-controller,extjs4,Forms,Model View Controller,Extjs4,我不会构建一个用户联系人表单,其中有两个选项卡包含相同的字段,但使用不同的语言。使用MVC和ExtJS4.0.7 我不想重复使用userinfo面板。。只需给它一个参数 包含用户信息的选项卡小部件如下所示: Ext.define('MyApp.view.user.FormUserInfo', { extend: 'Ext.Panel', alias: 'widget.userinfo', defaultType: 'textfield', items:
Ext.define('MyApp.view.user.FormUserInfo', {
extend: 'Ext.Panel',
alias: 'widget.userinfo',
defaultType: 'textfield',
items: [
{
name: 'first_name['+langKey+']',
}, {
name: 'last_name['+langKey+']',
}]
});
表单会这样加载它:
Ext.define('MyApp.view.user.Form', {
extend: 'Ext.FormPanel',
xtype: 'form',
items: [
{
xtype: 'tabpanel',
activeTab: 2,
items:[
{
xtype: 'userinfo',
cls: 'en',
tabConfig: {
title: 'Contact Details(EN)'
}
},{
xtype: 'userinfo',
cls: 'de',
tabConfig: {
title: 'Contact Details(DE)'
}
}]// /TabPanel.items
}]// /FormPanel.items
});
事实上,表单包含10多个字段和2种或更多的语言。因此,我需要对数据进行良好的控制
在使用小部件或我可以使用的属性时,有没有传递变量的方法?
我尝试使用panel类(cls)
'first_name['+this.cls+']
,但作用域错误或是其他什么(而且有点难看)。一种简单的方法是向用户信息面板添加自定义配置属性,然后将自定义配置值应用于initComponent()中的字段名
例如:
Ext.define('UserInfo', {
extend: 'Ext.Panel',
alias: 'widget.userinfo',
defaultType: 'textfield',
langKey: 'en',
initComponent: function() {
var me = this;
Ext.apply(me, {
items: [
{
fieldLabel: 'First Name '+me.langKey,
name: 'first_name['+me.langKey+']',
}, {
fieldLabel: 'Last Name '+me.langKey,
name: 'last_name['+me.langKey+']',
}]
});
me.callParent( arguments );
}
});
然后,您可以通过自定义配置,就像处理任何其他配置一样:
{
xtype: 'userinfo',
lankKey: 'en',
tabConfig: {
title: 'Contact Details(EN)'
}
}
Ext JS中的本地化:我不需要翻译视图,我需要在字段名称上添加一些标志,稍后再分离信息。非常感谢!它工作得很好!你给了我一些重构的想法:)