Se si sta ancora lottando con l'opzione di Ken, si consiglia di provare qualcosa di simile:
{{#each link in mainControls}}
<a {{action "goToLink" link}} {{bindAttr class="link.classes"}}>
{{link.name}}
</a>
{{/each}}
E quindi avrete bisogno di una funzione goToLink per gestire l'azione. Si può mettere sulla vostra collezione, ma se non lo fai, si suppone che bolla fino al gestore di percorso, che, in teoria, dovrebbe rendere le cose davvero semplice:
App.MyRoute = Ember.Route.extend({
// ... stuff ...
actions: {
goToLink: function(item) {
this.transitionTo(item.route);
}
}
});
Si può leggere di più su azioni , qui: http://emberjs.com/guides/templates/actions/
Aggiornamento
ho messo insieme un violino per voi, utilizzando la versione più recente Ember.
Ho apportato una lieve variazione al mio suggerimento sopra, a causa di alcune limitazioni tecniche che ho scoperto.
In particolare, la route sembra essere in grado di gestire le azioni per i controller creati internamente dalla route. Questo è un problema per il nostro menu di navigazione, dal momento che stai cambiando rotte, mentre è ancora sullo schermo.
Se sono passato a utilizzare un helper "render" di Handlebars per eseguire il rendering del menu, nessun router sembra essere disposto a gestire l'azione. Tuttavia,, il router corrente sembra essere sempre collegato alla catena a bolle per un "invio" sul controller. Quindi, ho appena fatto in modo che il controller invii un evento sulla catena al router, e otteniamo la nostra beatitudine di routing.
È possibile trovare il violino, qui: http://jsfiddle.net/Malkyne/fh3qK/
Update 2
Ecco un'altra versione dello stesso violino, solo con la (stranamente non documentato) ApplicationRoute utilizzato per gestire direttamente l'azione, senza che il controller debba eseguire alcuna inoltro: http://jsfiddle.net/Malkyne/ydTWZ/
Sembra che l'helper 'linkTo' riconosca il primo argomento come nome di percorso verbatim, non il nome della variabile .. –
Sì, ma come posso eseguire il rendering dell'elenco di collegamenti con URL diversi? – hoblin