【发布时间】:2025-11-27 09:55:01
【问题描述】:
我想对不同的数据集使用相同的模板,但我不知道该怎么做。
我的模板看起来像:
<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:无法读取未定义的属性 'events'”。如果我为事件列表定义辅助方法,如下所示:
Template.eventsList.helpers({
events: function() {
return Events.find({scheduleDate: {$gte: new Date()}}, {sort: {scheduleDate: 1}});
}
});
然后错误消失,但在所有事件、注册事件和存档事件的所有三个选项卡中都会显示 eventsList 帮助器返回的任何内容。
请让我知道上面的代码中缺少什么。
谢谢, 阿舒
【问题讨论】:
标签: javascript mongodb meteor