Global.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. Ext.define('uas.controller.Global', {
  2. extend: 'Ext.app.Controller',
  3. namespace: 'uas',
  4. config: {
  5. control: {
  6. 'navigation-tree': {
  7. selectionchange: 'onTreeNavSelectionChange'
  8. }
  9. },
  10. refs: {
  11. navigationTree: 'navigation-tree',
  12. contentPanel: 'contentPanel',
  13. },
  14. routes : {
  15. ':target': {
  16. action: 'handleRoute',
  17. before: 'beforeHandleRoute'
  18. }
  19. }
  20. },
  21. beforeHandleRoute: function(target, action) {
  22. let me = this,
  23. store = Ext.StoreMgr.get('navigation'),
  24. idx = store.find('target', target),
  25. className = Ext.ClassManager.getNameByAlias('widget.' + target),
  26. ViewClass = Ext.ClassManager.get(className);
  27. if(idx > -1 && !!ViewClass) {
  28. //resume action
  29. action.resume();
  30. }else {
  31. Ext.Msg.alert(
  32. '创建组件失败',
  33. '确定以返回首页',
  34. function() {
  35. // TODO 路由跳转并不会引起页面刷新,待解决
  36. me.redirectTo(me.getApplication().getDefaultToken());
  37. }
  38. );
  39. //stop action
  40. action.stop();
  41. }
  42. },
  43. handleRoute: function(target) {
  44. let me = this,
  45. store = Ext.StoreMgr.get('navigation'),
  46. idx = store.find('target', target),
  47. node = store.getAt(idx),
  48. title = node.get('text'),
  49. contentPanel = me.getContentPanel();
  50. Ext.suspendLayouts();
  51. contentPanel.removeAll(true);
  52. className = Ext.ClassManager.getNameByAlias('widget.' + target);
  53. ViewClass = Ext.ClassManager.get(className);
  54. cmp = new ViewClass();
  55. contentPanel.add(cmp);
  56. me.updateTitle(title);
  57. if (cmp.floating) {
  58. Ext.resumeLayouts(true);
  59. cmp.show();
  60. Ext.suspendLayouts();
  61. }
  62. Ext.resumeLayouts(true);
  63. },
  64. onTreeNavSelectionChange: function(treelist, record, eOpts) {
  65. let target = record.get('target');
  66. if(target) {
  67. this.redirectTo(target);
  68. }
  69. },
  70. updateTitle: function(title) {
  71. let contentPanel = this.getContentPanel();
  72. if (contentPanel.setTitle) {
  73. contentPanel.setTitle(title);
  74. }
  75. document.title = document.title.split(' - ')[0] + ' - ' + title;
  76. }
  77. });