2012-07-27 9 views
16

Tengo modelo:Cómo iterar sobre matriz en la plantilla del manillar sin nombre definido en el modelo

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

Código para la iteración en el manillar:

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

¿Cómo defino xxx?

Si JSON tenía el nombre de modelo como:

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

I iteraría simple en el manillar como:

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

Recomiendo cambiar la respuesta aceptada a la respuesta de Dave Stibrany a continuación. Definitivamente parece ser la mejor forma de hacer esto. –

Respuesta

16

Si usted tiene esto:

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

A continuación, sólo suministrar el nombre deseado cuando llama a la plantilla compilada:

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

Eso le dejará con su HTML deseado en h.

Demostración: http://jsfiddle.net/ambiguous/ZgVjz/

Si usted tiene una colección construida a partir de los datos:

var c = new C(a); 

Entonces será llamar a la plantilla de la siguiente manera:

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

Demostración: http://jsfiddle.net/ambiguous/uF3tj/

+3

Esto funciona, pero la respuesta de [Dave Stibrany] (http://stackoverflow.com/users/546741/dave-stibrany) [debajo] (http://stackoverflow.com/a/17329692/591374) es mucho mejor solución. – MusikPolice

34

Esto también funciona:

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