使用变量名调用Handlebars {{render}} [英] Calling Handlebars {{render}} with a variable name

查看:177
本文介绍了使用变量名调用Handlebars {{render}}的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法将变量上下文传递给 {{render}} 帮助器?



实例中,我的模型有一个多态关系,我想为每个不同的类型呈现适当的视图(而不必编写一个整个字符串,如果语句。 p>

我的事件模板看起来像这样:

 < ul> 
{{##在项目中#each事件}}
< li>
{{event.time}} {{render event.type event .eventable}}
< / li>
{{/ each}}
< / ul>

event.type 是一个字符串,设置为歌曲。如果我使用 {{render'song'event.eventable}} 一切都很好,但传递变量字符串'song'

$ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆