2012-07-27 17 views
16

mam model:Jak iteracyjne nad tablicę w szablonie kierownicy bez określonej nazwy modelu

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

Kod dla iteracji w kierownicy:

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

jak mogę określić xxx?

Jeśli JSON miał nazwę w modelach takich jak:

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

Chciałbym prosty iterate w kierownicy jak:

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

Zalecam zmianę zaakceptowanej odpowiedzi na odpowiedź Dave'a Stibrany poniżej. Zdecydowanie wydaje się, że jest to lepszy sposób. –

Odpowiedz

16

Jeśli masz to:

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

Wtedy właśnie Zaopatrujemy żądana nazwa po wywołaniu skompilowanego szablonu:

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

W ten sposób otrzymasz żądany kod HTML w postaci h.

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

Jeśli masz kolekcję zbudowany z danymi:

var c = new C(a); 

Potem zadzwonić szablon takiego:

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

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

+3

To działa, ale odpowiedź [Dave Stibrany] (http://stackoverflow.com/users/546741/dave-stibrany) [poniżej] (http://stackoverflow.com/a/17329692/591374) jest dużo lepsze rozwiązanie. – MusikPolice

34

To też działa:

{{#each this}} 
<p>{{email}}</p> 
{{/each}} 
Powiązane problemy