Ext.define('saas.view.core.tab.Controller', { extend: 'Ext.app.ViewController', alias: 'controller.core-tab-controller', init: function() { try { var me = this, tab = me.getView(), viewType = tab.viewType, _config = tab.index, viewConfig = tab.viewConfig; var view = { _config : viewConfig, xtype: viewType }; Ext.apply(view, viewConfig); tab.add(view); }catch(e) { console.error(e); } }, onTabActivate: function() { var component = this.getView(); var tabView = component.down('container'); if(tabView && typeof tabView.refresh == 'function') { tabView.refresh(); } if(!component.resetCloseClick) { component.tab.onCloseClick = function() { var me = this, tabView = component.down('panel'); if (me.fireEvent('beforeclose', me) !== false) { if (me.tabBar) { if(tabView.fireEvent('beforeclose', tabView) !== false && tabView.promiseCloseTab && typeof tabView.promiseCloseTab == 'function') { tabView.promiseCloseTab() .then(function(close) { console.log(); if(close) { if (me.tabBar.closeTab(me) === false) { return; } } }); }else { if (me.tabBar.closeTab(me) === false) { return; } } } else { if(tabView.fireEvent('beforeclose', tabView) !== false && tabView.promiseCloseTab && typeof tabView.promiseCloseTab == 'function') { tabView.promiseCloseTab() .then(function(close) { console.log(); if(close) { if (me.tabBar.closeTab(me) === false) { return; } } }); }else { me.fireClose(); } } } } component.resetCloseClick = true; } tabView && tabView.fireEvent('onTabActivate', tabView); }, onTabDeactivate: function(component) { var tabView = component.down('container'); tabView && tabView.fireEvent('onTabDeactivate', tabView); } });