灰燼把手幫手放在Ember.Handlebars.helpers
。您可以撥打電話Ember.Handlebars.helpers.{helperName}.call
。
但是,上面看起來像一個動態的局部/視圖樣式助手。我會建議爲它創建一個Handlebars View助手。語法相似,但您將View類傳遞到helper
。
Ember.Handlebars.helper('sideMenuLinks', App.SideMenuLinksView);
相應的視圖可以使用類似你這樣的模板,通過給予templateName
App.SideMenuLinksView = Ember.View.extend({
templateName: 'sideMenuLinksTemplate'
});
您的模板會是這樣的,
<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>
默認灰燼linkTo
是靜態的,在您無法從變量傳遞指定的路由。您將需要一個動態linkTo
幫手,如linkFor
,它在內部應用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);
});
最後你可以像下面這樣使用這個助手。在這個例子中,links
屬性將被綁定到控制器的content
。
<script type='text/x-handlebars' data-template-name='application'>
{{sideMenuLinks links=content routeVariable='page'}}
</script>
這是一個工作jsbin。
顯然這不起作用了,試圖用燼氣和不成功 –
你成功了嗎?我遇到了同樣的問題。 – julkiewicz