Я использую NavigationView в качестве панели root. И то, что я пытаюсь выполнить, - это нажимать виды на мою корневую панель, когда пользователь глубже погружается в мое приложение и всплывает, когда пользователь возвращается.Как правильно использовать Sencha NavigationView, глубокую привязку и историю браузера
Вот простые примеры, показывающие мою проблему: у меня есть один вид представления, показывающий некоторые сведения о записи.
Ext.define('MyApp.view.EntryDetails', {
extend: 'Ext.Panel',
xtype: 'entrydetails',
config: {
tpl: '<div>{id}</div>'
}
});
У меня также есть контроллер, выполненный с возможностью прослушивания следующего маршрутом: «вход /: ИД» и нажмите новый entrydetails посмотреть на navigationstack (NavigationView), когда этот маршрут матчи.
Ext.define('MyApp.controller.EntryDetails', {
extend: 'Ext.app.Controller',
config: {
routes: {
'entry/:id': 'showEntry'
},
refs: {
navview: 'mynavigationview'
},
},
showEntry: function(id){
this.getMain().push({
xtype: 'entrydetails',
data: {id:id}
});
}
});
Хорошо, это отлично работает. Теперь давайте сначала предположим, что я перехожу к: index.html # entry/1. Это приведет к новому представлению в стек, как я хочу. Затем я нажимаю другую ссылку index.html # entry/2. Еще одно представление помещено в стек, это также предполагаемое поведение. Теперь проблема возникает, когда я нажимаю кнопку «BROWSERS back». Это изменяет url на index.html # entry/1 и выталкивает еще один вид в мой стек. Я хотел выставить представление вместо добавления другого. Если я нажимаю кнопку панели инструментов, то вид открывается так, как я хотел, но это не относится к кнопке возврата браузеров.
Я понимаю, почему это происходит: рамка Сенча не знает, связано ли изменение URL с тем, что я нажимаю еще одну ссылку с тем же URL-адресом, что и предыдущий URL-адрес истории браузера, или если я нажимал кнопку «Назад» на мой браузер. И все, что знает мой код, это то, что он должен нажать другое представление на стек, когда он увидит изменение URL-адреса на «entry /: id».
Каков наилучший способ решить эту проблему. Как определить, что была нажата кнопка «Назад» браузера, и всплывающее представление из моей навигации.
Я подумал о том, чтобы проверить, был ли измененный URL-адрес симулятором для просмотра в нижней части моего навигационного стека, но я не уверен, что это способ сделать это.
Любая помощь/обсуждение по теме оценивается!
Спасибо за ваш ответ. Кажется, это путь. – jorgenfb