2013-01-15 56 views
3

我有以下用例:有些房間裏面有牀。 (Bummer ...)獲取流星模板的外部環境

有一個房間的循環使用模板「房間」。

<template name="rooms"> 
    {{#each availableRooms}} 
     {{> room}} 
    {{/each}} 
</template> 

這個模板得到每個迭代的房間。這可以通過這個訪問。

<template name="room"> 
<div class="room-outer"> 
    <button type="button" class="btn" data-toggle="collapse" data-target="#list-{{_id}}"> 
     {{name}} : {{getBeds this}} beds free. 
    </button> 
    <div id="list-{{_id}}" class="collapse in room-inner"> 
     {{#each guests_id}} 
      <div class="bed"> 
       <div class="blanket"> 
       {{showUser this}} 
       </div> 
      </div> 
     {{/each}} 
    </div> 
</div> 
</template> 

現在我想計算某些特殊值,我通過擴展模板做。我現在需要將這個變量傳遞給getBeds函數。是否可以通過在模板外部抓取並獲得空間來實現此功能?

Template.room.getBeds = function (room) { 
    if (room.guests_id) 
     return room.beds - _.size(room.guests_id); 
    else 
     return room.beds; 
}; 

基本上我不希望有寫{{getBeds這}},但只有{{getBeds}}

回答

2

不應該工作的呢?

Template.room.getBeds = function() { 
    if (this.guests_id) 
     return this.beds - _.size(this.guests_id); 
    else 
     return this.beds; 
}; 

docs

助手可以使用參數,以及他們收到的當前模板數據this

+0

嗨拉胡爾,這很好地工作!我可以問一個後續問題嗎?我也有Template.room.getFreeBeds = function(room){return _.range(Template.room.freeBeds(room));};基於之前。我能從外面設置這個嗎? – loomi

+0

還是有更好的地方讓更多的以數據爲中心的getBeds()函數? – loomi