2015-03-27 4 views
5

मैं एक Spacebars टेम्पलेट में कोड के इस खंड है:मैं उल्का स्पेसबार टेम्पलेट में ब्लॉक एन बार कैसे दोहरा सकता हूं?

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> 

मैं प्यार होता है करने के लिए सक्षम होने के लिए:

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

मैं बहुत की तरह हर बार इस एन बार संख्या बढ़ाने को दोहराना चाहते हैं इस पर ध्यान देने के लिए एन को कस्टम टेम्पलेट टैग पर पास करें (उदाहरण के लिए {{choices 3}})। ऐसा करने के लिए एक अच्छा DRY तरीका क्या है? मेरे पास एक अस्पष्ट धारणा है कि मैं एक टेम्पलेट सहायक लिख सकता हूं, लेकिन मुझे यकीन नहीं है कि कहां से शुरू करना है।

उत्तर

7

कार्य उदाहरण: http://meteorpad.com/pad/THAQfpfrru5MgAGnS/Copy%20of%20Leaderboard

आप में एक गिनती गुजरती हैं और मनमाने ढंग से वस्तुओं की एक सरणी लौट सकते हैं। सबसे सुरुचिपूर्ण नहीं ... लेकिन यह काम किया!

एचटीएमएल

<body> 
    {{>content}} 
</body> 

<template name="content"> 
    {{#each loopCount 5}} 
     <select class="form-group"> 
     {{#each choices}} 
      <option>{{this}}</option> 
     {{/each}} 
     </select> 
    {{/each}} 
</template> 

जे एस

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

बहुत बढ़िया! यह बहुत अच्छा काम करता है। मैंने ऑब्जेक्ट सरणी में एक संख्या जोड़ा और मुझे इच्छित नंबर को प्रदर्शित करने के लिए ब्लॉक के अंदर इसका इस्तेमाल किया: http://meteorpad.com/pad/rbyBzy4FzBtZauK8m/Repeat%20template%20block – raddevon

+0

बस एहसास हुआ कि मैंने यह टिप्पणी सबमिट की है कि मैं शायद बस उन्हें एक क्रमबद्ध सूची में डाल दें। – raddevon

0

आप उल्का के लिए अंडरस्कोर पैकेज का उपयोग कर रहे हैं, और भी CoffeScript का उपयोग करने की हो, तो आपको निम्न एकल बना सकते हैं लाइन टेम्पलेट सहायक:

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

तब आप अपने टेम्पलेट में इस सहायक का उपयोग कर सकते हैं:

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

इस उदाहरण को सादे जेएस में भी लिखा जाना अच्छा होगा – Jirik

संबंधित मुद्दे

 संबंधित मुद्दे