我想使用不同数据集的相同模板,我不知道该怎么做。
我的模板如下:
<template name="eventsList">
<div class="event">
{{#each events}}
{{> eventItem}}
{{/each}}
</div>
</template>
我希望使用类似的东西:
<template name="dashboard">
<div class="tab-content">
<div class="tab-pane active" id="all-events">
{{>eventsList allEvents}}
</div>
<div class="tab-pane" id="my-events">
{{>eventsList registeredEvents}}
</div>
<div class="tab-pane" id="archived-events">
{{>eventsList archivedEvents}}
</div>
</div>
</template>
现在所有参数,即allEvents,registeredEvents和archivedEvents都是从同一个mongo db集合中获取的,但是选择标准不同,我将它们取为:
Template.eventsDashboard.allEvents = function() {
return Events.find({scheduleDate: {$gte: new Date()}}, {sort: {scheduleDate: 1}});
}
Template.eventsDashboard.registeredEvents = function() {
return Events.find({registeredUsers: Meteor.userId()}, {sort: {scheduleDate: 1}});
}
Template.eventsDashboard.archivedEvents = function() {
return Events.find({scheduleDate: {$lt: new Date()}}, {sort: {scheduleDate: 1}});
}
但我在js控制台中收到一条错误,上面写着“ Deps重新计算的异常:TypeError:无法读取未定义的属性'事件'”。如果我为事件列表定义了helper方法,如下所示:
Template.eventsList.helpers({
events: function() {
return Events.find({scheduleDate: {$gte: new Date()}}, {sort: {scheduleDate: 1}});
}
});
然后错误消失但在所有事件的所有三个选项卡中,显示了由eventsList帮助程序返回的已注册事件和存档事件。
请告诉我上述代码中缺少的内容。
谢谢, Aashu
答案 0 :(得分:0)
尝试将{{#each events}}
更改为{{#each this}}
- 模板正在查找名为events
的数据对象(或帮助程序)上的字段,但实际上它看到的游标不是events
有一个this
字段。关键字#each
将使其仅使用{{1}}块的数据对象(光标)。