有没有办法将变量上下文传递给{{render}}
助手?
例如,我的模型上有多态关系,我想为每种不同的类型呈现适当的视图(无需编写整个if
语句字符串。
我的events
模板如下所示:
<ul>
{{#each event in model}}
<li>
{{event.time}} {{render event.type event.eventable}}
</li>
{{/each}}
</ul>
event.type
是一个字符串,设置为song
。如果我使用{{render 'song' event.eventable}}
,一切都很有效。但传递变量字符串'song'
不会产生任何效果。
可以这样做吗?
答案 0 :(得分:4)
您可以通过编写自己的Handlebars Helper来实现此目的,该Helleb确定要渲染的模板,然后委托渲染帮助器中的构建。试试这个:
Ember.Handlebars.registerBoundHelper('renderEvent', function(callingContext, event, options) {
return Ember.Handlebars.helpers.render.call(callingContext, event.get('type'), 'eventable', options);
});
然后在您的模板中,您将按如下方式调用模板:
{{#each event in model}}
{{renderEvent this event}}
((/each}}