Есть ли лучший способ указать маршрут по имени в ссылке с AngularDart?

У меня есть много именованных маршрутов в моем приложении AngularDart. Я создаю ссылки по старинке, вот так:

<a href="#/activities">Go</a>

Это кажется хрупким. Если я изменю путь или изменю стратегию вместо изменения хэша, мне нужно будет изменить все мои ссылки.

Могу ли я сделать что-то вроде:

<a ng-link="activities">Go</a>

Где activities — это имя маршрута из моей конфигурации маршрутов.


person Seth Ladd    schedule 11.01.2014    source источник


Ответы (1)


На данный момент вы можете использовать маршрутизатор для создания этих URL-адресов для вас.

router.url('activities', {});

Второй параметр (вероятно, должен быть необязательным) — это карта значений параметров. Например, если у вас есть путь типа /activity/:activityId, вы можете сделать:

router.url('activity', {'activityId', '12345'});

Генератор URL также учитывает текущее состояние маршрутов, поэтому, допустим, у вас был активный маршрут, такой как foo.bar.baz, и foo был параметризован, и вы каким-то образом получили маршрут бара (например, через RouteProvider или запросили router.root.getRoute('foo.bar')), тогда вам не нужно знать значения параметров маршрута foo для создания URL-адреса для baz, вы можете сделать:

Route bar = router.root.getRoute('foo.bar');
router.url('baz', {}, startingFrom: bar);

На данный момент вам нужно будет вручную вставить сгенерированный URL-адрес в шаблон:

<a href="{{ctrl.generatedUrl}}">link</a>

person pavelgj    schedule 21.01.2014
comment
Спасибо! Как бы вы порекомендовали подключить это к элементу <a>? - person Seth Ladd; 23.01.2014
comment
Пока вручную... <a href="{{ctrl.generatedUrl}}">link</a>. Было бы неплохо иметь директиву для этого. Пожалуйста, подайте FR. - person pavelgj; 23.01.2014
comment
Спасибо. Ваш комментарий - это ответ, который я искал :) - person Seth Ladd; 25.01.2014