#javascript #ember.js
#javascript #ember.js
Вопрос:
У меня есть промо-блок, который содержит несколько изображений и ссылок. Некоторые из них ведут на мой сайт, некоторые — на внешние ресурсы. В настоящее время я использую этот фрагмент кода для этих ссылок.
<a {{ bindAttr href="link" }}><img {{ bindAttr src="image" }} /></a>
Однако это фактически перезагружает страницу, и я не хочу этого, если я перемещаюсь по своему сайту. Кроме того, это может означать сбой моего приложения, если мы столкнемся с некоторыми несуществующими маршрутами, в случае опечаток или чего-то еще.
Итак, что я пытаюсь сделать, так это добавить действие, которое проверяет, существует ли маршрут, а затем выполняет правильное transitionTo
действие, и если маршрут не существует, выполните какой-то запасной вариант по умолчанию, но я не знаю, как выполнить эту проверку. Кто-нибудь уже делал что-то подобное?
PS Я знаю, что transitionTo
может принимать URL-адреса в качестве параметра, но в документах Ember говорится
It is also possible to pass a URL (a string that starts with a /).
This is intended for testing and debugging purposes
and should rarely be used in production code.
И не помогает предотвратить переход, если маршрут не существует.
Ответ №1:
У вас может быть маршрут по умолчанию, который будет «универсальным», который вы бы указали в своем маршрутизаторе как что-то вроде:
this.route('badRoute', {path: '/*pathname' });
внизу после того, как вы объявили все свои маршруты. Когда ни один из ваших маршрутов не совпадает, он будет сопоставлен, и вы сможете перенаправить или что-то еще, когда он перейдет на этот маршрут.
Комментарии:
1. И я думаю, я должен
transitionTo
использовать простой URL?2. таким образом, у вас будет App.badRoute = App.AuthenticatedRoute.extend({ и в нем у вас может быть переадресация, которая будет принимать действительный маршрут ember.
3. Нет, я имел в виду исходную проблему. Выполнение действия и выполнение
transitionTo
по моей ссылке