Поиск существующего маршрута из строки url

#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 по моей ссылке