使用变量名称调用Handlebars {{render}}

时间:2013-05-15 04:03:53

标签: ember.js handlebars.js

有没有办法将变量上下文传递给{{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'不会产生任何效果。

可以这样做吗?

1 个答案:

答案 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}}