ember.js - 使用变量名调用 Handlebars {{render}}

标签 ember.js handlebars.js

有什么方法可以将变量上下文传递给 {{render}} 帮助器吗?

例如,我的模型具有多态关系,我想为每种不同类型呈现适当的 View (无需编写一整串 if 语句。

我的事件模板如下所示:

<ul>
{{#each event in model}}
    <li>
        {{event.time}} {{render event.type event.eventable}}
    </li>
{{/each}}
</ul>

event.type 是一个字符串,并设置为song。如果我使用 {{render 'song' event.eventable}} 一切都会很好。但是传递变量字符串 'song' 不会产生任何结果。

这可以做到吗?

最佳答案

您可以通过编写自己的 Handlebars Helper 来实现此目的,它确定要渲染的模板,然后委托(delegate)给构建的渲染助手。试试这个:

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

关于ember.js - 使用变量名调用 Handlebars {{render}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16556631/

相关文章:

javascript - 如何使用不同的端点刷新 token ?

javascript - 将自定义 Markdown 转换为 HTML?

javascript - Ember App 默认滚动到页面中间

events - 事件点击 Handlebars

javascript - Ember , Ember 验证匹配密码和确认

ember.js - 在#each 中渲染 View

ember.js - ember-data 中 Rails 风格的多态模型

javascript - 在 Ember 中将类绑定(bind)到 DOM 设置超时

javascript - 抓取数据ID值

node.js - 如何使用 Handlebars 在 KeystoneJS 中指定模板?