हैंडलबार टेम्प्लेट के अंदर ऐरे की लंबाई कैसे पता करें?


86

मेरे पास एक हैंडलबार्स टेम्प्लेट है जो एक जन्स ऑब्जेक्ट का उपयोग करके प्रदान किया गया है। इस json में मैं एक सरणी भेज रहा हूँ। इस कदर:

var json = {
               "array":["abc","def","ghi","jkl"] 
}

अब अपने टेम्पलेट में मैं इस एरे की लंबाई का पता लगाना चाहता हूं। कुछ इस तरह:

{{#each item}}
   {{ array.length }}
{{/each}}

इसे हैंडलबार्स प्रलेखन में नहीं मिला।

जवाबों:


189

मेरी गलती....

{{array.length}}वास्तव में टेम्पलेट के अंदर काम किया। इसे यहाँ पोस्ट करने से पहले जाँच / परीक्षण कर लेना चाहिए था।


36
ठीक है, आपने मुझे इसका परीक्षण करने से बचाया, इसलिए धन्यवाद। :)
पेरी टवे

8
यह कम से कम मैंडर के स्वाद के लिए मैनड्रिल के स्वाद के लिए काम नहीं करता है जो सोच रहा है। मुझे अभी तक उपयुक्त प्रतिस्थापन नहीं मिला है।
वनिरोईस

43

इस मामले में आपको प्रत्येक ब्लॉक के भीतर से प्रत्येक के मूल चर को संदर्भित करने की आवश्यकता है:

{{#each array}}
    {{../array.length}}
{{/each}}

मुझे लगता है कि आपके वेरिएबल को "एरे" नाम दिया जा रहा है, शायद इस मुद्दे को भी स्वीकार कर रहा है। चलो स्पष्ट करने के लिए कुछ अलग JSON मान लें:

var json = {
    "fruit":["apple","orange","banana"]
};

तो फिर यह कर:

<ul>
    {{#each fruit}}
        <li>{{this}} {{@index}} {{../fruit.length}}</li>
    {{/each}}
</ul>

उपज होगी:

<ul>
    <li>apple 0 3</li>
    <li>orange 1 3</li>
    <li>banana 2 3</li>
</ul>

1
मुझे लगता है कि सूची आइटम होंगेapple 0 3 orange 1 3 banana 2 3
पॉल

@Paul, आप सही हैं, उदाहरण सही आउटपुट को प्रतिबिंबित करने के लिए अद्यतन किया गया है।
केविन पॉवेल

संबंधित प्रश्न: जब आप वर्तमान पाइप लाइन का मान लेते हैं, तो आपको सरणी की लंबाई कैसे मिलती है?
ग्यूकोस

Syntactically, यह उत्तर स्वीकृत उत्तर की तुलना में अधिक समझ में आता है।
नील मुनरो

2

आप इसे संभालने के लिए साधारण सहायक को परिभाषित कर सकते हैं:

Handlebars.registerHelper('get_length', function (obj) {
 return obj.length;
});   

और फिर इसे अपने टेम्पलेट में उपयोग करें जैसे:

{{get_length some_object}}

1

यदि आप सामग्री प्रदर्शित करने के लिए किसी खाली सूची के लिए परीक्षण कर रहे हैं ... Ember.js में जो हैंडलबार का उपयोग करता है, तो आपके पास #each के लिए और भी कुछ हो सकता है।

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.