我在Spacebars模板中有这段代码:
1.
<select class="form-group">
{{#each choices}}
<option>{{this}}</option>
{{/each}}
</select>
我想重复这次N次,每次都这样增加数字:
1.
<select class="form-group">
{{#each choices}}
<option>{{this}}</option>
{{/each}}
</select>
2.
<select class="form-group">
{{#each choices}}
<option>{{this}}</option>
{{/each}}
</select>
3.
<select class="form-group">
{{#each choices}}
<option>{{this}}</option>
{{/each}}
</select>
我希望能够将N传递给自定义模板标记来处理此问题(例如{{choices 3}}
)。干嘛干嘛这样做的好方法是什么?我有一个模糊的概念,我可以写一个模板助手,但我不知道从哪里开始。
答案 0 :(得分:7)
工作示例: http://meteorpad.com/pad/THAQfpfrru5MgAGnS/Copy%20of%20Leaderboard
您可以传入计数并返回任意对象的数组。不是最优雅......但它确实有效!
<强> HTML 强>
<body>
{{>content}}
</body>
<template name="content">
{{#each loopCount 5}}
<select class="form-group">
{{#each choices}}
<option>{{this}}</option>
{{/each}}
</select>
{{/each}}
</template>
<强> JS 强>
Template.content.helpers({
choices: function(){
return ['choice1','choice2','choice3']
},
loopCount: function(count){
var countArr = [];
for (var i=0; i<count; i++){
countArr.push({});
}
return countArr;
}
});
答案 1 :(得分:0)
如果您正在使用Meteor的下划线包,并且恰好使用CoffeScript,您可以创建以下单行模板助手:
t.helpers
loop: (count) -> {} for i in _.range count
然后,您可以在模板中使用此帮助程序:
{{! Will display 'Output' 5 times }}
{{#each loop 5}}
Output
{{/each}}