Мне нужно выполнить вызов API, когда пользователь нажимает кнопку «Назад» в браузере, а затем перенаправляется на маршрут, основанный на обратном ответе. Я читал о API определения местоположения, но не могу понять, как различать изменения URL-адресов из-за кликов по изменению ссылок и URL-адресов из-за кнопки браузера. Любое предложение действительно оценено.Ember.js выполняет действие при нажатии кнопки «Назад назад»
ответ
Я нашел решение и поделиться им здесь. Я не знаю, лучшее ли это решение, но оно работает для меня.
Я создал массив со списком маршрутов в том порядке, в котором они могут быть перемещены, предположим, что это ['route1', 'route2', 'route3', 'route4']
. В моей ситуации маршрут можно пропустить, но порядок должен поддерживаться. Например путь навигации может быть
Route1 -> route2 -> route4
но не
Route1 -> route4 ---> route3
Переход от route4 к route3 может быть выполняется только с помощью обратного действия (кнопка браузера или кнопка на странице).
willTransition
Действие для каждого из этого маршрута, я сравниваю индекс целевого маршрута в массиве с индексом текущего маршрута. Если первое значение меньше, чем второй, пользователь навигации обратно, а затем я могу выполнить API вызова:
// environment.js
ENV.APP.routeList = ['route1', 'route2', 'route3', 'route4']
// route
App.Route1 = Ember.Route.extend({
...
actions: {
willTransition: function(transition) {
var routeList = ENV.APP.routeList;
if (routeList.indexOf(transition.targetName) < routeList.indexOf(this.get("routeName"))) {
console.log("GO BACK");
this.send("back");
}
}
}
});
Я бы выбрал willTransition. Так как ваш вопрос не дает нам много работать, вот некоторые псевдо-код:
маршруты/some_route.js
export default Ember.Route.extend({
actions: {
willTransition: function(transition) {
var route = this;
backEndAjaxCall().then(function(response) {
if (response.itsAGoodIdeaToTransition) {
transition.abort();
route.transitionTo("some_other_route");
} else {
// Bubble the `willTransition` action so that
// parent routes can decide whether or not to abort.
return true;
}
});
}
}
});
- 1. Как убить действие при нажатии кнопки «Назад»?
- 2. Уничтожить действие при нажатии кнопки «Назад»?
- 3. Ошибка при нажатии кнопки назад
- 4. Андроид при нажатии кнопки «Назад»
- 5. Как закрыть фрагмент при нажатии кнопки «Назад»?
- 6. Реализация «условной» кнопки назад в ember.js
- 7. Избегайте активности заставки при нажатии кнопки «Назад»
- 8. Активность не закрывается при нажатии кнопки «Назад»
- 9. iOS 9: Добавить действие При нажатии кнопки «Назад к приложению»
- 10. Первое действие уничтожается при нажатии кнопки «Назад» от SecondActivity
- 11. Приложение вылетает при нажатии пользователем кнопки «Назад»
- 12. Убейте экран заставки при нажатии кнопки «НАЗАД»
- 13. Воспроизведение видео при нажатии кнопки «Назад»
- 14. Отключить кнопку отправки на странице при нажатии кнопки «Назад назад»
- 15. Как сохранить состояние страницы при нажатии кнопки «Назад назад»?
- 16. ajax получает предыдущий ответ при нажатии кнопки «Назад назад»?
- 17. Как вызвать событие при нажатии кнопки «Назад назад»
- 18. Как обновить страницу ASP.NET MVC при нажатии кнопки «Назад назад»
- 19. Назад действие кнопки UINavigation Views?
- 20. Добавление кнопки «Назад» в действие.
- 21. Как переопределить действие кнопки «Назад» по умолчанию?
- 22. Как поймать событие при нажатии кнопки «Назад»?
- 23. Какой метод при нажатии кнопки навигации «назад»?
- 24. Оценить приложение при нажатии кнопки «назад»
- 25. Принудительная обратная связь при нажатии кнопки «Назад»
- 26. Предотвращение ввода ajax при нажатии кнопки «Назад»
- 27. Очистить переменную при нажатии кнопки Android назад
- 28. сохранить данные при нажатии кнопки «назад»
- 29. Как удалить кнопку «Назад» при нажатии кнопки?
- 30. Пропустить страницу при нажатии кнопки «Назад», WP7
Я пытался что-то подобное, но willTransition обжигают каждый раз, когда текущий маршрут си возбужденное. Как я могу узнать, выполнено ли это действие, потому что пользователь нажал кнопку «Назад» браузера или потому, что он нажал другие ссылки на странице? – GUL
Ах да, хороший вопрос. Кажется, что нет конкретного способа узнать, как пользователь перешел на маршрут, хотя я нашел это: https://github.com/emberjs/ember.js/issues/3087. Используйте свою собственную опасность. –
Я просто попытался проверить значения в параметре «переход», но кажется, что нет никаких различий в значениях между обычным нажатием кнопки «переход» и «назад». Я думаю, что мне нужно вести список посещенных страниц и порядок, в котором они должны быть посещены, и проверить, если пользователь идет вперед или назад – GUL