/**
* Created by jwj on 2015/4/13.
* 增強Ext.panel.Panel(window,panel,form等界面組件)的beforeClose事件,以實現異步攔截
*/
Ext.define('Ext.ux.overrides.panel.BeforeClose4async', {
override: 'Ext.panel.Panel',
/**
* @event beforeclose
* 以實現異步攔截事件(beforeclose)
* @param this {Ext.panel.Panel}
* @param handlers {obj}
* @example
* listeners: {
* beforeClose: function (sender, handlers) {
* handlers.wait = true;
* //注意這里只是做了個彈出窗口示例,ajax異步攔截關閉事件道理類似
* Ext.MessageBox.confirm('提示:', '您確認要關閉此窗口嗎?', function (btn) {
* if (btn === 'yes') {
* handlers.process();
* } else {
* handlers.cancel();
* }
* });
* }
*}
*/
close: function () {
/*if (this.fireEvent('beforeclose', this) !== false) {
this.doClose();
}*/
var me = this,
handled = false,
handlers = {
wait: false,
process: function () {
me.doClose();
handled = true;
},
cancel: function () {
handled = true;
}
},
performOperation = me.fireEvent('beforeclose', me, handlers);
if (handlers.wait) {
return;
}
if (performOperation !== false) {
if (!handled) {
handlers.process();
}
}
return performOperation;
}
});
備注:在Extjs5.1下測試通過,自定義異步攔截事件都可參照此例進行實現。