如何在Meteor Spacebars模板中重复一次N次?

时间:2015-03-27 18:16:39

标签: meteor meteor-blaze spacebars

我在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}})。干嘛干嘛这样做的好方法是什么?我有一个模糊的概念,我可以写一个模板助手,但我不知道从哪里开始。

2 个答案:

答案 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}}