以下是相关模板:
<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>
以下是Meteor Handlebars的功能:
Template.tables.tableList = function(){
return Tables.find();
}
Template.tableBox.table = function(tableID){
return Rolls.find({tableName: tableID});
}
问题是在屏幕上呈现的每个表都包含了所有的&#39; Rolls&#39;列出(全部100行)。我试图将参数传递给Roll模板函数,而不是对参数进行过滤,而该模板函数是表名{{name}}。
在&#34;表id&#34; TableBox的标记,{{name}}被正确转换。即&#34; T1&#34;,&#34; T2&#34;,&#34; T3&#34;但是,我需要传递给函数以正确地从db查询中过滤掉相同的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
},
});
}
}
答案 0 :(得分: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>
该函数的'Name'参数不需要花括号。不知怎的,把手和Meteor在没有花括号的情况下识别你所指的上下文,并将其应用于tableBox的{{name}}内。即“T1”,“T2”,“T3”正确传递给函数,现在我的唯一表只包含特定于各个表的卷列表。