Die Ember-Lenker-Helfer sind unter Ember.Handlebars.helpers
platziert. Sie können sie mit Ember.Handlebars.helpers.{helperName}.call
anrufen.
Allerdings sieht das obige wie ein dynamischer Teil-/Ansichtsstilhelfer aus. Ich würde vorschlagen, einen Handlebars View-Helfer dafür zu erstellen. Die Syntax ist ähnlich, aber Sie übergeben eine View-Klasse an die helper
.
Ember.Handlebars.helper('sideMenuLinks', App.SideMenuLinksView);
Die entsprechende Ansicht einer Vorlage ähnlich wie bei Ihnen, indem sie eine templateName
App.SideMenuLinksView = Ember.View.extend({
templateName: 'sideMenuLinksTemplate'
});
Sie Vorlage wäre verwenden können so etwas wie,
<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>
Der Standard Ember linkTo
ist statisch, In dass Sie die benannte Route nicht von einer Variablen übergeben können. Sie benötigen einen dynamischen linkTo
Helfer wie die linkFor
, die den Variablenpfad vor nachschlägt, der intern linkTo
anwendet.
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);
});
Schließlich können Sie diesen Helfer wie unten verwenden. Die links
-Eigenschaft wird in diesem Beispiel an die content
des Controllers gebunden.
<script type='text/x-handlebars' data-template-name='application'>
{{sideMenuLinks links=content routeVariable='page'}}
</script>
Hier ist eine funktionierende jsbin.
anscheinend funktioniert das nicht mehr, versuchen Sie es mit ember-cli und keinen Erfolg –
Haben Sie Erfolg? Ich stieß auf das gleiche Problem. – julkiewicz