我需要做下一步:有几个按钮。按任何按钮改变了状态,因此一些按钮变得不可见。 我写了以下代码
Loyalty.company.CompanyEditForm = Ext.extend(Loyalty.tools.AdvancedForm,
{
defaultConfig:{
......
currentState: 'READONLY'
// EDIT, CREATE, CREATE_EDIT
},
constructor:function (config) {
Ext.apply(config, this.defaultConfig);
config['owner'] = this;
config['items'] = [];
config['items'] = this.createItems(config);
config['buttons'] = this.createButtons(config);
Loyalty.company.CompanyEditForm.superclass.constructor.call(this, config);
this.loadCompany(config['jsonCompany']);
this.renderingView(config);// here it's ok
},
....
renderingView:function (config){
if (config.currentState == 'READONLY'){
this.items.items[0].disabled = false;
Ext.ComponentQuery.query('#cardNumber')[0].disabled = true;
Ext.ComponentQuery.query('#btnEdit')[0].hidden = false;
Ext.ComponentQuery.query('#btnRewrite')[0].hidden = true;
Ext.ComponentQuery.query('#btnSubmit')[0].hidden = true;
Ext.ComponentQuery.query('#btnCancel')[0].hidden = false;
} else if (config.currentState == 'EDIT'){
this.items.items[0].disabled = false;
Ext.ComponentQuery.query('#cardNumber')[0].disabled = false;
Ext.ComponentQuery.query('#btnEdit')[0].hidden = true;
Ext.ComponentQuery.query('#btnRewrite')[0].hidden = true;
Ext.ComponentQuery.query('#btnSubmit')[0].hidden = false;
Ext.ComponentQuery.query('#btnCancel')[0].hidden = false;
} else if (config.currentState == 'CREATE'){
Ext.ComponentQuery.query('#cardNumber')[0].disabled = false;
Ext.ComponentQuery.query('#btnEdit')[0].hidden = true;
Ext.ComponentQuery.query('#btnRewrite')[0].hidden = false;
Ext.ComponentQuery.query('#btnSubmit')[0].hidden = false;
Ext.ComponentQuery.query('#btnCancel')[0].hidden = false;
}
this.owner.doComponentLayout()
return null;
},
createButtons:function (config, form) {
return [
{
id: 'btnEdit',
text:Loyalty.messages['company.edit.fields.edit'],
handler:function () {
config.currentState = 'EDIT';
config.owner.renderingView(config)
}
} ,
{
xtype:'button',
id: 'btnRewrite',
text:Loyalty.messages['company.edit.fields.rewrite'],
handler:function () {
config.currentState = 'READONLY';
config.owner.renderingView(config)
}
},
{
xtype:'button',
id: 'btnSubmit',
text:Loyalty.messages['company.edit.fields.submit'],
handler:function () {
config.currentState = 'CREATE_EDIT';
config.owner.renderingView(config)
}
},
{
xtype:'button',
id: 'btnCancel',
text:Loyalty.messages['company.edit.fields.cancel'],
handler:function () {
if (config.currentState == 'EDIT' || config.currentState == 'CREATE_EDIT'){
config.currentState = 'READONLY';
config.owner.renderingView(config)
}
}
}
];
},
....
}
);
当我从构造函数中调用它时,函数renderingView很好用。但是当它从按钮方法调用时,没有任何反应。要更改的按钮的状态(隐藏)。 我认为重绘的问题
答案 0 :(得分:1)
您应该使用setVisible
和setDisabled
方法,而不是在renderingView
中设置属性。
答案 1 :(得分:0)
我相信当按钮处理程序运行时,您的配置对象是未定义的。您是否在Chrome中获得错误堆栈跟踪?
答案 2 :(得分:0)
原因很简单。一旦我开始使用setVisibled()和setDisabled()而不是禁用并隐藏一切正常工作