我正在使用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查询,但必须有更好的方法。
我查看了带有参数的部分/助手,但这似乎不是我问题的解决方案。
谢谢,弗拉基米尔
答案 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,则可以使用一个模板,并根据应用程序状态将其填入即将到来或过去的节目。