Pomocników kierownicy Ember są umieszczone na Ember.Handlebars.helpers
. Możesz zadzwonić do nich pod numer Ember.Handlebars.helpers.{helperName}.call
.
Jednak powyższe wygląda jak dynamiczny pomocnik częściowego/widoku stylu. Sugerowałbym stworzenie dla niego pomocnika Handlebars View. Składnia jest podobna, ale przekazujesz klasę widoku do helper
.
Ember.Handlebars.helper('sideMenuLinks', App.SideMenuLinksView);
Odpowiedni widok można użyć szablonu podobnego do Ciebie dając templateName
App.SideMenuLinksView = Ember.View.extend({
templateName: 'sideMenuLinksTemplate'
});
You szablonu byłoby coś,
<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>
Domyślna Ember linkTo
jest statyczna, W że nie można przekazać nazwanej trasy ze zmiennej. Potrzebny będzie dynamiczny pomocnik linkTo
, taki jak linkFor
, który wyszukuje zmienną ścieżkę przed wewnętrznym zastosowaniem z zastosowaniem .
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);
});
Wreszcie możesz użyć tego pomocnika, jak poniżej. Właściwość links
będzie związana z content
kontrolera w tym przykładzie.
<script type='text/x-handlebars' data-template-name='application'>
{{sideMenuLinks links=content routeVariable='page'}}
</script>
Oto działa jsbin.
Podobno to już nie działa, starając się to zrobić za pomocą ember-cli i bez powodzenia –
Udało ci się? Wpadłem na ten sam problem. – julkiewicz