2014-02-25 57 views
0

我想使用具有不同数据集的相同模板,但我不确定该怎么做。将数据动态传递给流星中的模板

我的模板是这样的:

<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来自同一蒙戈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:无法读取未定义的属性”事件“”。如果我定义eventslist辅助方法,象下面这样:

Template.eventsList.helpers({ 
    events: function() { 
     return Events.find({scheduleDate: {$gte: new Date()}}, {sort: {scheduleDate:  1}}); 
    } 
}); 

然后错误消失,但无论如何,注册事件和归档事件无论通过eventsList助手返回显示的所有三个选项卡。

请让我知道上面的代码中缺少的是什么。

感谢, Aashu

回答

0

尝试改变{{#each events}}{{#each this}} - 模板正在寻找它的数据对象上的字段(或辅助)称为events,但实际看到的是没有一个events光标领域。关键字this将使它只使用#each块的数据对象(光标)。