2013-04-15 2 views
6

Есть ли способ динамически генерировать ссылку с помощью вспомогательного помощника link-to путем передачи переменной с маршрутом пути?EmberJS - Как динамически генерировать ссылку с linkTo?

Например, вместо жесткого кодирования путь:

{{#linkTo "route.subroute" model}}{{model.title}}{{/linkTo}} 

Я хочу, чтобы иметь возможность передать link-to помощника переменную, которая держит путь:

{{#linkTo destination model}}{{model.title}}{{/linkTo}} 

используйте этот случай, чтобы позволить мне консолидировать шаблоны, которые отличаются только этим путем. Например, если есть две коллекции, каждая из которых имеет разные адресаты. При визуализации с каждым помощником шаблоны одинаковы, за исключением пути в link-to.

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

Я думал о построении вручную этот путь:

<a {{bindAttr href="destination"}}>{{model.title}}</a> 

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

+0

видеть https://github.com/emberjs/ember.js/pull/2252 и https://github.com/emberjs/ember.js/issues/2462 Я думаю, что в настоящее время это просто невозможно. –

ответ

2

Есть ли способ динамически генерировать ссылку, используя хелпер linkTo, передавая переменную с маршрутом пути?

В настоящее время нет.

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

Согласен, что это допустимый прецедент, я бы ожидал, что вспомогательный помощник linkTo будет поддерживать его в будущем. Между тем, так как вы получили только две коллекции вы могли бы сделать это с условными в шаблоне

{{#if isRouteOne}} 
    {{#linkTo "routeOne.subrouteOne" model}}{{model.title}}{{/linkTo}} 
{{else}} 
    {{#linkTo "routeTwo.subrouteTwo" model}}{{model.title}}{{/linkTo}} 
{{/if}} 
+0

Ну, я написал «два» как упрощение проблемы; к сожалению, у меня на самом деле 7.Имея возможность управлять тем, что многие логические переменные будут довольно утомительными, но для более простых случаев мне все же нравится ответ как временная работа. –

+0

lol согласился с 7, это не будет весело. в этом случае имеет смысл написать небольшой помощник руля. мы надеемся, что упоминаемый PR @ sly7_7 вскоре будет объединен. –

2

Вместо {{linkTo}}, вы можете использовать {{action}} и обрабатывать событие перехода по названию маршрута указать в destination свойства модели.

+0

Ему нужна «активная» поддержка. – Nonconformist

0

Существует другой очень похожий вопрос SO, в котором я answer этот вопрос. Решение возможно с использованием встроенной версии вспомогательного устройства link-to.

В этой ситуации мы имеем:

{{link-to model.title destination model}} 

Какой бы компилируется:

<a href="#/route/subroute/3856"> 
    Click me 
</a> 
Смежные вопросы