2015-03-27 13 views
5

Mam ten fragment kodu w szablonie Spacebars:Jak mogę powtórzyć blok N razy w szablonie Meteor Spacebars?

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

chciałbym powtórzyć to N razy zwiększając liczbę każdym razem tak:

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> 

chciałbym, aby móc przekazać N do niestandardowego znacznika szablonu, aby się tym zająć (np. {{choices 3}}). Jaki jest dobry sposób, aby to zrobić? Mam niejasne pojęcie, że mogę napisać pomocnika szablonu, ale nie jestem pewien, od czego zacząć.

Odpowiedz

7

przykład praca: http://meteorpad.com/pad/THAQfpfrru5MgAGnS/Copy%20of%20Leaderboard

można przekazać do zliczania i przesłać tablicę dowolnych obiektów. Nie jest to najbardziej elegancki ... ale zadziałało!

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

Awesome! Działa to świetnie. Dodałem numer do tablicy obiektów i użyłem go wewnątrz bloku, aby wyświetlić numerację, którą chciałem: http://meteorpad.com/pad/rbyBzy4FzBtZauK8m/Repeat%20template%20block – raddevon

+0

Właśnie zdałem sobie sprawę z tego, że przesłałem ten komentarz, który prawdopodobnie mógłbym po prostu umieść je na uporządkowanej liście. – raddevon

0

Jeśli używasz pakietu dla podkreślenia Meteor, a także stało się używając coffeescript można tworzyć następujące jedno- szablon pomocnika szablonu:

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

Następnie można użyć tego pomocnika w szablonie:

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

Byłoby wspaniale mieć ten przykład napisany również w prostym JS – Jirik

Powiązane problemy