Я работаю в ExtJs4. Я застрял в точке, где мне нужно изменить свой URL-адрес, например E://demoProj/index.html, на E://demoProj/index.html#firstpage или E://demoProj/index.html#secondpage на основе каждой страницы (просмотра) в extjs4. Я много пробовал, но еще не решил. Как я могу решить эту проблему? Пожалуйста, дайте мне некоторые рекомендации. Заранее спасибо.
Как изменить URL-адрес в extjs4 на основе рендеринга страницы?
Ответы (2)
Если вы спрашиваете, как изменить якорь в адресной строке, вот как это сделать:
window.location.hash = 'firstpage';
Если ваш вопрос больше о том, как отслеживать количество просмотров, вам понадобится какой-то механизм хранения. Если вы ограничиваетесь только клиентской частью, решением могут стать файлы cookie.
Пример:
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;
});
person
rixo
schedule
06.06.2013
Если вы используете макет карты и меню, вот что вы можете сделать:
В области просмотра
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);
В BodyPanel
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
},
]
.............
person
Dev
schedule
07.06.2013