如何根据每页呈现更改extjs4中的url?

如何根据每页呈现更改extjs4中的url?,url,extjs,url-routing,extjs-mvc,extjs4.2,Url,Extjs,Url Routing,Extjs Mvc,Extjs4.2,我在ExtJs4中工作。我陷入了一个困境,我必须更改我的url,比如将E://demoProj/index.html更改为E://demoProj/index.html#firstpage或E://demoProj/index.html#secondpage,基于ExtJs4中的每页(视图)。我尝试了很多,但还没有解决它。我该如何解决这个问题? 请给我一些指导。 提前谢谢 如果您要问的是如何更改地址栏的定位点,那么下面是如何更改的: window.location.hash = 'firstpa

我在ExtJs4中工作。我陷入了一个困境,我必须更改我的url,比如将E://demoProj/index.html更改为E://demoProj/index.html#firstpage或E://demoProj/index.html#secondpage,基于ExtJs4中的每页(视图)。我尝试了很多,但还没有解决它。我该如何解决这个问题? 请给我一些指导。
提前谢谢

如果您要问的是如何更改地址栏的定位点,那么下面是如何更改的:

window.location.hash = 'firstpage';
如果您的问题更多的是关于如何跟踪视图计数,那么您将需要某种存储机制。如果您将自己限制在客户端,这可能是一个解决方案

例如:

Ext.onReady(function() {
    var cookies = Ext.util.Cookies,
        // accounting for first time (undefined), and casting to int
        currentViewCount = +cookies.get('viewCount') || 0;

    // update view count
    cookies.set('viewCount', currentViewCount + 1);

    window.location.hash = 'page' + currentViewCount;
});

如果您使用的是卡片布局和菜单,以下是您可以执行的操作:

在您的视口中

var APP_CARD_ITEMS_MAP = new Ext.util.HashMap();
APP_CARD_ITEMS_MAP.add('home', 0);
APP_CARD_ITEMS_MAP.add('page1', 1);
APP_CARD_ITEMS_MAP.add('page2', 2);

Ext.define('AM.view.Viewport' ,{
extend: 'Ext.container.Viewport',
id:'myviewport',
requires:[
          'APP.view.*'    
          ], 
items: [{
        xtype:'panel',
        items:[     
               {
                xtype:'panel',
                items: [                
                      {
                        xtype:'BodyPanel',
                        id:'bodypanel' 
                      } 
                    ]
              }
             ]
             ...........
创建一个容器(此处为bodypanel)并在其上包含所有页面。单击可使用以下方法更改url和所需页面:

window.location.hash = '#'+ menu.itemId;
Ext.getCmp('bodypanel').getLayout().setActiveItem(1);
在您的车身面板中

  Ext.define('AM.view.BodyPanel',{
  extend:'Ext.Container', 
  alias:'widget.BodyPanel',
  xtype:'bodypanel',
  requires:[''],  //your views
  fullscreen:true,
  layout: 'card',
  activeItem:0,   
  listeners:{
      afterrender:function(){
         var hashedUrl = window.location.hash; 
            if(hashedUrl && hashedUrl.indexOf(":")==-1){
                hashedUrl = hashedUrl.substring(1, hashedUrl.length);
                var activeItem = APP_CARD_ITEMS_MAP.get(hashedUrl);
                Ext.getCmp('bodypanel').getLayout().setActiveItem(activeItem);
            }   
      }
  },
  items : [{
              xtype: 'page1',                         
                  id:'page1',
                  x:200
            },{
                  xtype: 'page2',
                  id:'page2',
                  x:200
            },
          ]
  .............