2012-07-27 11 views
16

में परिभाषित नाम के बिना हैंडल टेम्पलेट में सरणी पर पुनरावृति करने के लिए मैं मॉडल है:कैसे मॉडल

[ 
    { 
    "ID": 5, 
    "email": "[email protected]" 
    }, 
    { 
    "ID": 6495, 
    "email": "[email protected]" 
    } 
] 

कोड हैंडल में पुनरावृत्ति के लिए:

{{#each xxx}} 
    <p>{{email}}</p> 
    {{/each}} 

मैं xxx कैसे परिभाषित करते हैं?

तो JSON की तरह मॉडल में नाम था:

users: [ 
     { 
     "ID": 5, 
     "email": "[email protected]" 
     }, 
     { 
     "ID": 6495, 
     "email": "[email protected]" 
     } 
    ] 

मैं की तरह हैंडल में सरल पुनरावृति जाएगा:

{{#each users}} 
    <p>{{email}}</p> 
    {{/each}} 
+2

मैं डेव स्टिब्रनी के उत्तर में आपके स्वीकृत उत्तर को बदलने की अनुशंसा करता हूं। निश्चित रूप से ऐसा करने के बेहतर तरीके की तरह लगता है। –

उत्तर

16

आप इस हों:

var a = [ 
    { 
    "ID": 5, 
    "email": "[email protected]" 
    }, 
    { 
    "ID": 6495, 
    "email": "[email protected]" 
    } 
]; 

तो बस की आपूर्ति वांछित नाम जब आप संकलित टेम्पलेट को कॉल करते हैं:

var t = Handlebars.compile($('#t').html()); 
var h = t({ users: a }); 

इससे आपको h में वांछित HTML के साथ छोड़ दिया जाएगा।

डेमो: http://jsfiddle.net/ambiguous/ZgVjz/

आप एक संग्रह डेटा से बनाया गया है, तो:

var h = t({ users: c.toJSON() }); 

डेमो:: http://jsfiddle.net/ambiguous/uF3tj/

var c = new C(a); 

तो फिर तुम इस तरह टेम्पलेट फोन करता हूँ

+3

यह काम करता है, लेकिन [डेव Stibrany] से जवाब (http://stackoverflow.com/users/546741/dave-stibrany) [नीचे] (http://stackoverflow.com/a/17329692/591374) बहुत अधिक है बेहतर समाधान – MusikPolice

34

यह भी काम करता है:

{{#each this}} 
<p>{{email}}</p> 
{{/each}}