Как мне манипулировать историей внутренних страниц IONIC3? - PullRequest
0 голосов
/ 16 ноября 2018

Я создавал приложение Angular4 / Ionic3, но столкнулся с небольшим камнем преткновения, связанным с историей браузера и особенностями истории Ionic.

Сначала небольшая справочная информация.Мое приложение использует navCtrl.SetRoot () для всех переходов страниц, потому что .pop () и .push () не очень хорошо обновляли страницу браузера.В процессе разработки я обратил внимание на причуду с ионной навигацией: если вы переходите с Page1 на Page2, то попробуйте снова перейти на Page1 (используя .SetRoot ("Page1")), Ionic посмотрит на его историю и заметит, что вы былина Page1 непосредственно перед Page2, поэтому он решит вернуться в историю браузера, а не делать новый экземпляр Page1 в истории.В конце операции .SetRoot ("Page1") история будет выглядеть как '-> Page1 <- Page2', а не как Page1 Page2 -> Page1 <- '. </p>

Теперь это не такОбычно это проблема, но я заметил, что внутренне сохраненная история Ionic отделена от истории браузера.Таким образом, если история Ionic отличается от истории браузера, могут начаться проблемы.Например, если вы обновите страницу, то история браузера останется прежней, но история Ionic станет списком, содержащим только текущую страницу.

EX

  1. Еслимы переходим с Page1 на страницу2 к странице3, затем обновляем История браузера: 'Page1 Page2 -> Страница3 <-' </strong> Ионная история: '-> Страница3 <-' </strong>

  2. Теперь мы переходим на страницу 2, нажимая кнопку возврата браузера История браузера: «Страница1 -> Страница2 <- Страница3» </strong> Ионная история: «Страница3 -> Страница2 <-»</strong> (поскольку он не нашел экземпляр Page2 до Page3 в своей истории, он создает новый экземпляр и помещает его на вершину стека)

  3. Теперь мыSetRoot ( "Page3").Так как Ionic History считает, что для возврата на страницу 3 необходимо вернуться, это заставит историю браузера также вернуться назад, чтобы попытаться согласовать ситуацию. История браузера: '-> Page1 <- Page2 Page3' </strong> Ионная история: '-> Page3 <- Page2' </strong>

  4. Результат: Потому чтоURL-адрес изменился из-за того, что история браузера теперь находится на странице Page1, будет активирован дополнительный нежелательный переход, который приведет нас на страницу Page1, когда мы захотим перейти на страницу 3.

Просто чтобы сделать это абсолютноЯсно: Ионная история, о которой я говорю, - это то, что, как я считаю, существует из-за поведения моего приложения.Я никогда не видел, где он хранится.Кроме того, я точно знаю, что Ионная история отличается от стека навигации NavCtrl, потому что мое приложение использует только .SetRoot (), поэтому стек навигации - это всегда только массив длиной 1, содержащий только текущую страницу.

С учетом всего сказанного, вот мой вопрос:

Есть ли способ получить доступ и управлять внутренне сохраненной историей Ionic Framework?По крайней мере, есть ли способ стереть его?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...