Я использую ionic 4, который использует угловой маршрутизатор. Существует сценарий, в котором пользователь может щелкнуть категорию и перейти на страницу категории. На странице категории отображается кнопка «Назад», которая возвращает пользователя на домашнюю страницу. Однако, если пользователь перезагружает страницу, кнопка «Назад» больше не отображается, поскольку в истории нет других страниц, на которые можно было бы вернуться. Я хочу обнаружить этот сценарий и добавить домашнюю страницу в историю, чтобы у пользователя была возможность вернуться. Это возможно? Есть указатели?
Есть ли способ добавить страницу в историю углового маршрутизатора, если там ничего нет?
Ответы (1)
Имея в виду, что angular - это просто фреймворк, построенный на javascript, возможно, есть способ сделать это угловым. В javascript каждый раз, когда браузер переходит на страницу или раздел, я проверяю объект истории, чтобы узнать, есть ли в его стеке какой-либо элемент. нравится:
var numberOfEntries = window.history.length;
А если его длина равна нулю, вы можете использовать новый api pushState
для управления историей браузера.
То же самое можно сделать и с angular, как сказано в документации:
Angular Router («маршрутизатор») заимствует у этой модели. Он может интерпретировать URL-адрес браузера как инструкцию для перехода к просмотру, созданному клиентом. Он может передавать необязательные параметры вспомогательному компоненту представления, которые помогают ему решить, какой конкретный контент представить.
Документация по маршрутизатору Angular.
Я знаю, что изучение всех черт в angular api немного обременительно, но вам будет лучше знать все это. Но поскольку я считаю, что вы немного торопитесь, могу сказать, что самый быстрый способ - использовать атрибут defaultHistory в объекте ionicPage:
На страницы можно переходить с помощью глубоких ссылок из любого места в приложении, но иногда приложение запускается по URL-адресу, и страница должна иметь такую же историю, как если бы к ней переходили изнутри приложения.
а также ...
Эта история будет использоваться только в том случае, если история еще не существует ...
Я сделал нечто подобное в приложении, которое мы разрабатываем на моей текущей работе, но оно было разработано в ionic 1 и angularjs (я не мог проголосовать, какое из них они собирались использовать), поэтому я не могу вам сказать если то, что мы сделали, сработает для вас. Но, читая документацию по последней версии ionic, я думаю, вы можете сделать это с помощью этого конкретного свойства:
Вы можете попробовать и рассказать мне, как все прошло.
Кстати, мы использовали $ ionicHistory, $ state, $ stateProvider и метод $ state.go (), чтобы управлять всем этим, но, как я уже говорил, я был на ionic 1 и angularjs.
Удачи!