6

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

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

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

然后我需要用不同的数据显示同一模板的两个实例——一个是过去的节目,一个是即将到来的节目。

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

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

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

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

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

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

我用参数研究了部分/助手,但这似乎不是我问题的解决方案。

谢谢,弗拉基米尔

4

2 回答 2

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>
于 2013-01-06T19:05:24.190 回答
0

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

于 2013-01-08T04:25:37.547 回答