2014-03-12 55 views
1

這裏是有問題的模板:流星把手傳遞之前的上下文的參數下一個{{#Each}}幫手塊

<template name="tables"> 
    <div class="table-area"> 
     {{#each tableList}} 
      {{> tableBox}} 
     {{/each}} 
    </div> 
</template> 

<template name="tableBox"> 
<table id="{{name}}" class="table table-condensed table-striped"> 
    <tr> 
     <td>{{name}}</td> 
     <td> Min:</td> 
     <td>{{minBet}}</td> 
     <td>{{cPlayers}}</td> 
    </tr> 
    <tr> 
     <td>Dice1</td> 
     <td>Dice2</td> 
     <td>Dice3</td> 
     <td>Total</td> 
    </tr> 
    {{#each table [{{name}}]}} 
     {{> tableRow}} 
    {{/each}} 
    </table> 
</template> 

<template name="tableRow"> 
    <tr> 
     <td>{{Roll.dice1}}</td> 
     <td>{{Roll.dice2}}</td> 
     <td>{{Roll.dice3}}</td> 
     <td>{{Roll.total}}</td> 
    </tr> 
</template> 

,這裏是流星把手功能:

Template.tables.tableList = function(){ 
    return Tables.find(); 
} 

Template.tableBox.table = function(tableID){ 
    return Rolls.find({tableName: tableID}); 
} 

問題是,在屏幕上呈現的每個表格都列出了所有'勞斯萊斯'(全部100行)。而不是被篩選參數,我試圖通過滾動模板函數,這是表名{{name}}。

在TableBox的「table id」標記中,{{name}}得到正確轉換。即「T1」,「T2」,「T3」等。但這是我需要傳遞給函數以正確過濾數據庫查詢相同的TableID。有沒有辦法更簡單地做到這一點?如果可能的話,我想堅持把手模板在這裏做事的方式。

對於低於參考是用於測試數據的JSON初始化代碼:

//initiate tables 
for (i = 1; i < 11; i++) { 
    Tables.insert({ 
     name: 'T' + i, 
     minBet: '300', 
     cPlayers: '(8)' 
    }); 
} 

//initiate rolls within tables 
for (i = 1; i < 11; i++) { 
for(j=1; j<11; j++){ 
var die1 = ((Math.floor(Math.random() * 5) +1).toString()); 
var die2 = ((Math.floor(Math.random() * 5) +1).toString()); 
var die3 = ((Math.floor(Math.random() * 5) +1).toString()); 
var t = (parseInt(die1) + parseInt(die2) + parseInt(die3)).toString(); 

Rolls.insert({ 
    Roll: { 
     tableName: 'T' + i, 
     rollNumber: j; 
     dice1: die1, 
     dice2: die2, 
     dice3: die3, 
     total: t 
     }, 
     }); 
    } 
} 

回答

2

確定 - 試驗和錯誤後 - 計算出來:

在輔助函數:

Template.tableBox.table = function(tableID){ 
    return Rolls.find({"Roll.tableName": tableID}); 
} 

我需要添加嵌套的Roll.tableName屬性名稱,但括號內作爲查詢。

而早在tableBox模板:

<template name="tableBox"> 
    <table id="{{name}}" class="table table-condensed table-striped"> 
    <tr> 
     <td>{{name}}</td> 
     <td> Min:</td> 
     <td>{{minBet}}</td> 
     <td>{{cPlayers}}</td> 
    </tr> 
    <tr> 
     <td>Dice1</td> 
     <td>Dice2</td> 
     <td>Dice3</td> 
     <td>Total</td> 
    </tr> 
    {{#each table name}} 
     {{> tableRow}} 
    {{/each}} 
    </table> 
</template> 

沒有必要爲「名稱」的說法該函數的花括號。不知何故,handlebars和Meteor可以在不使用大括號的情況下識別您所指的上下文,並將其應用於TableBox的{{name}}中。即「T1」,「T2」,「T3」正確傳遞給函數,現在我的唯一表只包含特定於各個表的卷的列表。