Gli aiutanti manubri Ember sono posizionati a Ember.Handlebars.helpers
. Puoi chiamarli con Ember.Handlebars.helpers.{helperName}.call
.
Tuttavia, quanto sopra è simile a un helper di stile parziale/dinamico. Suggerirei di creare un helper di Handlebars View per questo. La sintassi è simile ma si passa in una classe View allo helper
.
Ember.Handlebars.helper('sideMenuLinks', App.SideMenuLinksView);
la vista corrispondente possibile utilizzare un modello simile al tuo dando un templateName
App.SideMenuLinksView = Ember.View.extend({
templateName: 'sideMenuLinksTemplate'
});
Si modello sarebbe qualcosa di simile,
<script type='text/x-handlebars' data-template-name='sideMenuLinksTemplate'>
{{#each link in view.links}}
<li class="navigation page">
{{#linkFor parentView.routeVariable link.linkToRouteContext}}
{{{link.iconTag}}}<i class="icon-right-open"></i>{{link.linkText}}</a>
{{/linkFor}}
</li>
{{/each}}
</script>
L'Ember linkTo
predefinito è statica, in che non è possibile passare la rotta indicata da una variabile. Avrai bisogno di un helper dinamico linkTo
come lo linkFor
che ricerca il percorso della variabile prima dello applicando internamente lo linkTo
.
Ember.Handlebars.registerHelper('linkFor', function(path, params, options) {
var view = options.data.view;
var name = view.get(path);
var args = [name, params, options];
return Ember.Handlebars.helpers.linkTo.apply(this, args);
});
Finalmente puoi usare questo aiutante come di seguito. La proprietà links
sarà associata allo content
del controller in questo esempio.
<script type='text/x-handlebars' data-template-name='application'>
{{sideMenuLinks links=content routeVariable='page'}}
</script>
Ecco un lavoro jsbin.
fonte
2013-07-09 04:47:54
a quanto pare questo non funziona più, cercando di farlo utilizzando ember-cli e senza successo –
Ci sei riuscito? Ho incontrato lo stesso problema. – julkiewicz