[英]Passing data dynamically to template in meteor
我想将同一模板用于不同的数据集,但是我不确定该怎么做。
我的模板如下所示:
<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}});
}
});
然后错误消失了,但是在所有事件,已注册事件和已归档事件的所有三个选项卡中,显示了eventList helper返回的任何内容。
请让我知道以上代码中缺少的内容。
谢谢叔叔
尝试将{{#each events}}
更改为{{#each this}}
-模板正在其数据对象(或帮助器)上寻找一个称为events
的字段,但实际上看到的是没有events
的游标领域。 关键字this
将使其仅在#each
块中使用其数据对象(光标)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.