我在ExtJs 4.2中构建一个MVC应用程序,并且有一个窗口和一个formpanel。
表单面板中隐藏的文本字段很少,我想显示/隐藏。
当我运行此命令时:
Ext.getCmp(' PartsSell&#39)显示();
或
Ext.getCmp(' PartsSell&#39)。调用setVisible(真);
甚至
Ext.widget(' ObjectForm&#39)。getForm()findField。(' PartsSell')调用setVisible(真);
什么都没发生!!
这是formpanel片段:
Ext.define('crm.view.ObjectForm', {
extend : 'Ext.form.Panel',
header : false,
alias : 'widget.ObjectForm',
url : 'action.php',
id : "ObjectForm",
defaultType : 'textfield',
initComponent: function() {
Ext.apply(this, {
items : [
{
fieldLabel : 'label',
labelWidth : 115,
hidden : true,
allowBlank : true,
name : 'PartsSell',
itemId : 'PartsSell',
xtype : 'textfield',
vtype : 'DigitsVtype',
width : 150,
padding : '0 0 0 15'
},
/* other stuff */]
} );
this.callParent(arguments);
}
} );
FF / chrome控制台的行为就像一切正常。
如果我设置隐藏' param to' false'显示该字段。
根据Tarabass和Drake的建议:
我已id
更改了itemId
。
现在我可以通过
触发字段了 Ext.ComponentQuery.query('#PartsSell')[0].hide() / .show();
答案 0 :(得分:1)
覆盖默认方法时,需要运行callParent()
。
Ext.define('crm.view.ObjectForm', {
extend: 'Ext.form.Panel',
width: 300,
height: 300,
header: false,
alias: 'widget.ObjectForm',
url: 'action.php',
id: 'ObjectForm',
initComponent: function() {
Ext.apply(this, {
items: [{
fieldLabel: 'label',
labelWidth: 115,
//hidden : true,
allowBlank: true,
name: 'PartsSell',
id: 'PartsSell',
xtype: 'textfield',
vtype: 'DigitsVtype',
width: 150,
padding: '0 0 0 15'
}]
});
this.callParent(arguments);
}
});
答案 1 :(得分:1)
将id: 'PartsSell'
更改为itemId: 'PartsSell'
使用选择器'#PartsSell'
选择组件
然后使用方法setHidden(false)
(由config system生成)将hidden设置为false。
类似的东西:
Ext.ComponentQuery.query('#PartsSell')[0].setHidden(false);