history.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:3k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */
  2. Ext.onReady(function() {
  3.     
  4.     // The only requirement for this to work is that you must have a hidden field and
  5.     // an iframe available in the page with ids corresponding to Ext.History.fieldId
  6.     // and Ext.History.iframeId.  See history.html for an example.
  7.     Ext.History.init();
  8.     
  9.     // Needed if you want to handle history for multiple components in the same page.
  10.     // Should be something that won't be in component ids.
  11.     var tokenDelimiter = ':';
  12.     
  13.     var tp = new Ext.TabPanel({
  14.         renderTo: Ext.getBody(),
  15.         id: 'main-tabs',
  16.         height: 300,
  17.         width: 600,
  18.         activeTab: 0,
  19.         
  20.         items: [{
  21.             xtype: 'tabpanel',
  22.             title: 'Tab 1',
  23.             id: 'tab1',
  24.             activeTab: 0,
  25.             tabPosition: 'bottom',
  26.             
  27.             items: [{
  28.                 title: 'Sub-tab 1',
  29.                 id: 'subtab1'
  30.             },{
  31.                 title: 'Sub-tab 2',
  32.                 id: 'subtab2'
  33.             },{
  34.                 title: 'Sub-tab 3',
  35.                 id: 'subtab3'
  36.             }],
  37.             
  38.             listeners: {
  39.                 'tabchange': function(tabPanel, tab){
  40.                     Ext.History.add(tabPanel.id + tokenDelimiter + tab.id);
  41.                 }
  42.             }
  43.         },{
  44.             title: 'Tab 2',
  45.             id: 'tab2'
  46.         },{
  47.             title: 'Tab 3',
  48.             id: 'tab3'
  49.         },{
  50.             title: 'Tab 4',
  51.             id: 'tab4'
  52.         },{
  53.             title: 'Tab 5',
  54.             id: 'tab5'
  55.         }],
  56.         
  57.         listeners: {
  58.             'tabchange': function(tabPanel, tab){
  59.                 // Ignore tab1 since it is a separate tab panel and we're managing history for it also.
  60.                 // We'll use its handler instead in that case so we don't get duplicate nav events for sub tabs.
  61.                 if(tab.id != 'tab1'){
  62.                     Ext.History.add(tabPanel.id + tokenDelimiter + tab.id);
  63.                 }
  64.             }
  65.         }
  66.     });
  67.     
  68.     // Handle this change event in order to restore the UI to the appropriate history state
  69.     Ext.History.on('change', function(token){
  70.         if(token){
  71.             var parts = token.split(tokenDelimiter);
  72.             var tabPanel = Ext.getCmp(parts[0]);
  73.             var tabId = parts[1];
  74.             
  75.             tabPanel.show();
  76.             tabPanel.setActiveTab(tabId);
  77.         }else{
  78.             // This is the initial default state.  Necessary if you navigate starting from the
  79.             // page without any existing history token params and go back to the start state.
  80.             tp.setActiveTab(0);
  81.             tp.getItem(0).setActiveTab(0);
  82.         }
  83.     });
  84.     
  85. });