2013-03-15 4 views
63

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

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

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

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

हैंडलबार दस्तावेज़ में इसे नहीं मिला।

उत्तर

129

मेरे बुरा ....

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

+24

अच्छी तरह से, आपने मुझे इसका परीक्षण करने से बचाया, इसलिए धन्यवाद। :) –

+0

यह मेरे लिए काम नहीं कर रहा है :( – Anenth

+5

यह कम से कम किसी भी व्यक्ति के लिए हैंडलबार्स के मंड्रिल स्वाद के लिए काम नहीं करता है। मुझे अभी तक एक उपयुक्त प्रतिस्थापन नहीं मिला है। – oneirois

0

इस प्रयास करें:

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

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

{{#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

मुझे लगता है कि सूची आइटम 'सेब 0 3 होगा 'नारंगी 1 3' 'केले 2 3' – Paul

+0

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

+0

संबंधित प्रश्न: वर्तमान पाइपलाइन मान होने पर आपको सरणी की लंबाई कैसे प्राप्त होती है? – Gyscos

1

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

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

और फिर इसका उपयोग करें आपके टेम्पलेट में उदाहरण:

{{get_length some_object}} 
संबंधित मुद्दे