Я использую NavigationView в качестве корневой панели. И то, что я пытаюсь сделать, это нажимать представления на мою корневую панель, когда пользователь углубляется в мое приложение, и извлекать их, когда пользователь возвращается.
Вот простой пример, показывающий мою проблему: у меня есть один тип представления, показывающий некоторые детали записи.
Ext.define('MyApp.view.EntryDetails', {
extend: 'Ext.Panel',
xtype: 'entrydetails',
config: {
tpl: '<div>{id}</div>'
}
});
У меня также есть контроллер, настроенный на прослушивание следующего маршрута: "entry/:id" и добавление нового представления entrydetails в стек навигации (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. Другое представление помещается в стек, это также предполагаемое поведение.Теперь проблема появляется, когда я нажимаю кнопку «Назад» БРАУЗЕРА. Это изменяет URL-адрес на index.html#entry/1 и помещает еще одно представление в мой стек. Я хотел открыть вид вместо добавления другого. Если я нажму кнопку «Назад» на панели инструментов, представление появится так, как я хотел, но это не относится к кнопке «Назад» в браузере.
Я понимаю, почему это происходит: платформа Sencha touch не знает, было ли изменение URL-адреса вызвано тем, что я нажал другую ссылку с тем же URL-адресом, что и предыдущий URL-адрес истории браузера, или я нажал кнопку «Назад» на своем браузер. И все, что мой код знает, это то, что он должен помещать в стек другое представление, когда видит изменение URL-адреса на «entry/:id».
Как лучше всего решить эту проблему. Как определить, что была нажата кнопка «Назад» в браузере и появилось представление из моего навигационного представления.
Я подумал о том, чтобы проверить, был ли измененный URL-адрес идентичен представлению, находящемуся ниже в моем навигационном стеке, но я не уверен, что это способ сделать это.
Любая помощь/обсуждение по теме приветствуется!