2012-07-27 9 views
16

Ich habe Modell:Wie iterieren Array in Lenker Vorlage ohne definierten Namen in Modell

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

-Code für in Lenker Iterieren:

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

wie definiere ich xxx?

Wenn JSON Name in Modell wie gehabt:

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

würde ich einfach Iterierte in Lenker wie:

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

Ich würde empfehlen, Ihre akzeptierte Antwort zu Dave Stibrany Antwort unten zu ändern. Definitiv scheint der bessere Weg, dies zu tun. –

Antwort

16

Wenn Sie diese:

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

Dann wird der gerade liefern gewünschter Name beim Aufruf der kompilierten Vorlage:

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

Das wird Sie mit Ihrem gewünschten HTML in h verlassen.

Demo: http://jsfiddle.net/ambiguous/ZgVjz/

Wenn Sie eine Sammlung von Daten aufgebaut haben:

var c = new C(a); 

Dann würden Sie die Vorlage wie folgt aufrufen:

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

Demo: http://jsfiddle.net/ambiguous/uF3tj/

+3

Das funktioniert, aber die Antwort von [Dave Stibrany] (http://stackoverflow.com/users/546741/dave-stibrany) [unten] (http://Stackoverflow.com/a/17329692/591374) ist ein viel bessere Lösung. – MusikPolice

34

Das funktioniert auch:

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