繁体   English   中英

动态将数据传递到流星中的模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM