2011-08-09 11 views
11

La plantilla {{}} cada directiva funciona muy bien para la iteración en una serie como esta:¿Puedo hacer un jquery-tmpl cada uno sobre las propiedades del objeto

var myArray = ["a","b","c"]; 

Me pregunto si hay un equivalente para la iteración sobre las propiedades del objeto, es decir:

var myObj = {"propOne": "a", "propTwo": "b", "propThree": "c"}; 

me gustaría una plantilla que me deje de salida como

<ul> 
    <li><span>propOne</span><span>a</span></li> 
    .... etc 

Para obtener puntos de bonificación, me gustaría usar esta plantilla de KnockoutJS.

Respuesta

11

En realidad, {{each}} recorrerá las propiedades de un objeto. Se puede hacer algo como esto:

{{each(prop, val) myObj}} 
     <li><span>${prop}</span> - <span>${val}</span></li> 
{{/each}} 

Este es un ejemplo en el golpe de gracia: http://jsfiddle.net/rniemeyer/rpMsM/

Si realmente desea utilizar la opción foreach de la plantilla de la unión, entonces la única opción real es mapear el objeto a una matriz de objetos con propiedades clave/valor. Algo como esto: http://jsfiddle.net/rniemeyer/rpMsM/1/

+0

Giddy Up, que es la bomba! =) –

7

También puede utilizar este

{{each myObj}} 
     <li><span>${$index}</span> - <span>${$value}</span></li> 
{{/each}} 
+0

Necesita eliminar un símbolo en una variable "$". 'De $ {$ index} a $ {index}' Me ha ayudado. –

Cuestiones relacionadas