我的代码中有一个ext.window,它有默认的保存和关闭按钮。在关闭按钮单击我隐藏窗口:
Ext.define('MyPack.template.TemplateWindow', {
extend : 'Ext.Window',
id: 'templateEditorWindow',
closeAction: 'hide',
autoScroll: false,
createTemplateEditor : function() {
// some code
},
initComponent : function() {
this.createTemplateEditor();
Ext.applyIf(this, {
layout : 'border',
modal : true
});
this.items = [ this.templateEditor ];
this.buttons = [
{ text : '#{msgs.button_save}',
window : this,
handler : function () {
if(this.window.templateEditor.save()) {
this.window.hide();
}
}
},
{ text : '#{msgs.button_close}',
cls : 'secondaryBtn',
window : this,
handler : function( ){
this.window.hide();
}
}
];
this.callParent(arguments);
},
});
我有另一个窗口在窗口上方延伸。
Ext.define('MyPack.template.RestfulTemplateWindow', {
extend : 'MyPack.template.TemplateWindow',
createTemplateEditor : function() {
// some code
}
});
我正在创建这个子类。窗口正确创建。但是我想要覆盖关闭按钮的处理函数。关闭它应该销毁。
如何覆盖它?
答案 0 :(得分:1)
您可以在窗口上定义closeAction
closeAction :String关闭标题工具时要执行的操作 点:
destroy
: 从DOM中删除窗口并销毁它和所有后代 组件。该窗口无法通过显示重新显示 显示方法。
hide
: 通过设置隐藏的可见性和应用否定来隐藏窗口 偏移。该窗口可以通过节目重新显示 方法。注意:此行为已更改!设置确实会影响收盘价 将调用approriate closeAction的方法。
Defaults to: 'destroy'
所以没有必要覆盖任何东西。
修改>>记得打电话给close()而不是hide()!
{
text : '#{msgs.button_save}',
window : this,
handler : function () {
if(this.window.templateEditor.save()) {
this.window.close(); // call close!
}
}
},
{ text : '#{msgs.button_close}',
cls : 'secondaryBtn',
window : this,
handler : function( ){
this.window.close(); // call close!
}
}
修改强>
免责声明:以下方式只是一种解决方法
Ext.define('MyPack.template.RestfulTemplateWindow', {
extend : 'MyPack.template.TemplateWindow',
closeAction: 'destroy', // redefine th close action
initComponent: function() {
// all values set would be overrided by the parent
this.callParent(arguments);
// identify the buttons somehow
this.on('beforehide',function(w){w.close();return false;},this);
}
});