/* * @Description: * @Author: hy * @Date: 2019-08-12 17:59:33 * @LastEditTime: 2019-08-13 13:44:57 */ Ext.define('uas.controller.Global', { extend: 'Ext.app.Controller', namespace: 'uas', stores: [ 'Navigation' ], config: { control: { 'navigation-tree': { selectionchange: 'onTreeNavSelectionChange' } }, refs: { viewport: 'viewport', navigationTree: 'navigation-tree', contentPanel: 'contentPanel', }, routes : { ':target': { action: 'handleRoute', before: 'beforeHandleRoute' } } }, beforeHandleRoute: function(target, action) { let me = this, className = Ext.ClassManager.getNameByAlias('widget.' + target), ViewClass = Ext.ClassManager.get(className); if(!!ViewClass) { //resume action action.resume(); }else { Ext.Msg.alert( '创建组件失败', '确定以返回首页', function() { // TODO 路由跳转并不会引起页面刷新,待解决 me.redirectTo(me.getApplication().getDefaultToken()); } ); //stop action action.stop(); } }, handleRoute: function(target) { let me = this, store = Ext.StoreMgr.get('Navigation'), node = store.findNode('target', target), title = node.get('text'), contentPanel = me.getContentPanel(); this.getViewport().getViewModel().set('selectedNode', node); Ext.suspendLayouts(); contentPanel.removeAll(true); className = Ext.ClassManager.getNameByAlias('widget.' + target); ViewClass = Ext.ClassManager.get(className); cmp = new ViewClass(); contentPanel.add(cmp); me.updateTitle(title); if (cmp.floating) { Ext.resumeLayouts(true); cmp.show(); Ext.suspendLayouts(); } Ext.resumeLayouts(true); }, onTreeNavSelectionChange: function(treelist, record, eOpts) { let target = record.get('target'); if(target) { this.redirectTo(target); } }, updateTitle: function(title) { let contentPanel = this.getContentPanel(); if (contentPanel.setTitle) { contentPanel.setTitle(title); } document.title = document.title.split(' - ')[0] + ' - ' + title; } });