有没有办法将参数传递给Meteor中的Handlebars模板?

时间:2013-01-06 18:50:16

标签: meteor handlebars.js

我正在使用Meteor 0.5.2并试图解决我认为应该有一个简单解决方案的明显模式。

我有一个模板应该在每个模板实例中返回不同的数据块。

例如 - 我有一个显示电视节目的模板 - 按节目显示。

然后我需要显示具有不同数据的同一模板的两个实例 - 一个包含过去的节目,另一个包含即将播出的节目。

所以我有一个电视节目模板:

<template name="tv_program">
   {{#each shows}}
   ...
</template>

理想情况下,我想做类似的事情:

{{> tv_program past_shows}}
...
{{> tv_program upcoming_shows}}

将参数传递给tv_program模板实例,我可以从JavaScript中读取并调整mongo查询。

目前我已经复制/粘贴了我的模板/ js代码并调整了mongo查询,但必须有更好的方法。

我查看了带有参数的部分/助手,但这似乎不是我问题的解决方案。

谢谢,弗拉基米尔

2 个答案:

答案 0 :(得分:6)

您正在以错误的级别接近问题。您应该告诉您的模板如何从代码中执行操作,而不是尝试告诉您的代码如何从模板中执行操作。例如:

Template.past_shows.shows = function() { return shows(-1); }

Template.upcoming_shows.shows = function() { return shows(1); }

function shows(order) {
  return Shows.find({}, {$sort: order});
}

<template name="past_shows">
  {{#each shows}}
    {{> show}}
  {{/each}}
</template>

<template name="upcoming_shows">
  {{#each shows}}
    {{> show}}
  {{/each}}
</template>

<template name="show">
  <li>{{_id}}: {{name}}</li>
</template>

答案 1 :(得分:0)

如果您正在为自己的应用程序使用状态机,例如meteor-router,则可以使用一个模板,并根据应用程序状态将其填入即将到来或过去的节目。