2015-03-27 10 views
5

Bir Spacebars şablonunda kod bloğu var: Ben isterim Meteor Boşluk Çubukları şablonunda N kez bir bloğu tekrarlayabilirim?

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> 

edebilmek için:

1. 
<select class="form-group"> 
    {{#each choices}} 
    <option>{{this}}</option> 
    {{/each}} 
</select> 

ben her zaman şöyle numarasını artırarak bu N kez tekrarlamak istiyorum Buna dikkat çekmek için N özel bir şablon etiketine geçin (örn. {{choices 3}}). Bunu yapmanın güzel bir yolu nedir? Şablon yardımcısı yazabileceğim belirsiz bir fikrim var, ama nereden başlayacağımı bilmiyorum.

cevap

7

Çalışma Örnek: Bir sayımı geçmek ve keyfi nesneler dizisi dönebilirsiniz http://meteorpad.com/pad/THAQfpfrru5MgAGnS/Copy%20of%20Leaderboard

. En zarif değil ... ama işe yaradı!

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; 
    } 

}); 
+0

Müthiş! Bu harika çalışıyor. Nesne dizisine bir sayı ekledim ve istediğim numaralandırmayı görüntülemek için bloğun içinde kullandım: http://meteorpad.com/pad/rbyBzy4FzBtZauK8m/Repeat%20template%20block – raddevon

+0

Muhtemelen bu yorumu gönderdiğimi fark ettim sadece onları yerine sıralı bir listeye koyun. – raddevon

0

Eğer Meteor çizgi paketini kullanarak ve aynı zamanda coffeescript kullanacağınız başına ediyorsanız, aşağıdaki tek oluşturabilir satır şablonu yardımcısı:

t.helpers 
    loop: (count) -> {} for i in _.range count 

Daha sonra şablonda bu yardımcı kullanabilirsiniz:

{{! Will display 'Output' 5 times }} 
{{#each loop 5}} 
    Output 
{{/each}} 
+0

Bu örnekte sade JS ile yazılmış olması harika olurdu – Jirik