使用变量名调用Handlebars {{render}} [英] Calling Handlebars {{render}} with a variable name
问题描述
有没有办法将变量上下文传递给 {{render}}
帮助器?
实例中,我的模型有一个多态关系,我想为每个不同的类型呈现适当的视图(而不必编写一个整个字符串,如果
语句。 p>
我的事件
模板看起来像这样:
< ul>
{{##在项目中#each事件}}
< li>
{{event.time}} {{render event.type event .eventable}}
< / li>
{{/ each}}
< / ul>
event.type
是一个字符串,设置为歌曲
。如果我使用 {{render'song'event.eventable}}
一切都很好,但传递变量字符串'song'$ c $
$ b
可以这样做吗?
您可以通过编写自己的Handlebars Helper来实现此目的不要渲染模板,然后委托给渲染助手中的构建。尝试这样:
Ember.Handlebars.registerBoundHelper('renderEvent',function(callContext,event,options){
返回Ember.Handlebars.helpers.render.call(callContext,event.get('type'),'eventable',options);
});
然后在您的模板中,您将调用模板如下:
{{#每个事件在模型中}}
{{renderEvent this event}}
((/ each}}
Is there any way to pass a variable context to the {{render}}
helper?
For instance, I have a polymorphic relationship on my model, and I want to render the appropriate view for each different type (without have to write a whole string of if
statements.
my events
template looks like this:
<ul>
{{#each event in model}}
<li>
{{event.time}} {{render event.type event.eventable}}
</li>
{{/each}}
</ul>
the event.type
is a string and is set to song
. If I use {{render 'song' event.eventable}}
everything works great. But passing the variable string 'song'
produces nothing.
Can this be done?
You can achieve this by writing your own Handlebars Helper which determines the template to render and then delegates to the build in render helper. Try this:
Ember.Handlebars.registerBoundHelper('renderEvent', function(callingContext, event, options) {
return Ember.Handlebars.helpers.render.call(callingContext, event.get('type'), 'eventable', options);
});
Then in your template you would call the template as follows:
{{#each event in model}}
{{renderEvent this event}}
((/each}}
这篇关于使用变量名调用Handlebars {{render}}的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!