Хорошо, поэтому, чтобы отметить тот факт, что я нашел , который, как я помню, ранее искал, я пошел дальше и протестировал это для вас в приложении Ember, над которым я работаю. Короче говоря, это да, вы можете retry()
сохраненный переход в любое время, и поэтому я предлагаю всегда хранить последний переход, а затем retry
его при необходимости в вашем случае истечения срока действия сеанса. Ну, последний полезный переход в любом случае, ваш переход к логинному маршруту и т. Д., Конечно, должен быть проигнорирован.
Возможно, вы даже сможете использовать аналогичную относительно быструю компоновку, как и сейчас. В моей заявке маршрута, routes/application.js
, я добавил следующие обработчик действий
actions: {
willTransition: function(transition) {
this.set('_latestTransition', transition);
},
saveTransition: function() {
var transition = this.get('_latestTransition');
console.log('transition saved', transition);
this.set('_transitionSnapshot', transition);
},
retryTransition: function() {
var transition = this.get('_transitionSnapshot');
console.log('transition retry', transition);
transition.retry();
}
}
Тогда для моего теста, я просто добавил две кнопки в постоянно видимом меню: один, чтобы вызвать saveTransition
действия, а другая retryTransition
действия , В результате, как я уже испортил, после нажатия кнопки «Сохранить», после нескольких последующих переходов, а затем нажав кнопку повтора, я вернулся на страницу, на которой был первый щелчок на кнопке сохранения. Динамические сегменты были прекрасными; У меня нет параметров запроса в любом месте, поэтому тестирование их было недостаточно быстрым для меня, но объект Transition
, по-видимому, также поддерживает эти функции.
Поскольку эти обработчики действий находятся в пути приложения, до тех пор, как ничто другое в приложении не обрабатывает действия от этих имен (или особенно в willTransition
случае действия получают ый, возвращая true
), они будут рассмотрены здесь. Как сказано, вы можете сами использовать этот подход или сохранить необходимый переход с помощью какого-либо посредника услуг в соответствии с вашими потребностями и как это предлагается в комментариях.
Возможно, вы всегда можете сохранить последний переход от действия 'willTransition' маршрута приложения и использовать его там, где это необходимо? – Thernys
Вопрос: могу ли я сохранить завершенный переход и повторно использовать его позднее. Из руководства «отмените переход, вызвав переход. Abort(), и если объект перехода будет сохранен, его можно будет повторно попытаться позже, вызвав функцию transition.retry().». Я буду играть вокруг него, но я думал, что у кого-то может быть работающее решение. – dashambles
Немного яснее. Долгосрочные хранилища в Эмбере назывались службой. Это простой объект, который живет продолжительностью приложения. Вы можете хранить и перезагружать оттуда все, что вам нужно, между переходами. – lependu