Есть ли способ добавить страницу в историю углового маршрутизатора, если там ничего нет?

Я использую ionic 4, который использует угловой маршрутизатор. Существует сценарий, в котором пользователь может щелкнуть категорию и перейти на страницу категории. На странице категории отображается кнопка «Назад», которая возвращает пользователя на домашнюю страницу. Однако, если пользователь перезагружает страницу, кнопка «Назад» больше не отображается, поскольку в истории нет других страниц, на которые можно было бы вернуться. Я хочу обнаружить этот сценарий и добавить домашнюю страницу в историю, чтобы у пользователя была возможность вернуться. Это возможно? Есть указатели?


person Vivek V Dwivedi    schedule 27.08.2018    source источник


Ответы (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, я думаю, вы можете сделать это с помощью этого конкретного свойства:

IonicPage

Вы можете попробовать и рассказать мне, как все прошло.

Кстати, мы использовали $ ionicHistory, $ state, $ stateProvider и метод $ state.go (), чтобы управлять всем этим, но, как я уже говорил, я был на ionic 1 и angularjs.

Удачи!

person Raziel Ravenheart    schedule 27.08.2018
comment
Приносим извинения за потраченное впустую ваше время, поскольку в ionic много изменений, у них есть свойство defaultHref с компонентом кнопки возврата, именно для того случая, который я хотел. - person Vivek V Dwivedi; 28.08.2018
comment
Не волнуйтесь, было весело пытаться вам в этом помочь! - person Raziel Ravenheart; 28.08.2018