2014-02-25 58 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塊的數據對象(光標)。