2011-06-09 17 views
8

yo uso Mustache.js succusefully mostrar el html, aquí está el código¿Cómo usar Mustache.js si el objeto está en una matriz?

 var mygame = { 
     player:'viking', 
     games:[{name:'d1',type:'avg'},{name:'cod7',type:'fps'},{name:'war3',type:'rts'}] 
     }; 
    var template = '{{player}} is a good guy<br/> <ul>{{#games}}<li>name:{{name}} and type:{{type}} </li>{{/games}}</ul>'; 
    var html = Mustache.to_html(template, mygame); 
    var con = document.getElementById('container'); 
    con.innerHTML = html; 

pero ¿cómo se utiliza cuando el objeto es una matriz, como

var mygames = [{name:'d1',type:'avg'},{name:'cod7',type:'fps'},{name:'war3',type:'rts'}]; 

Respuesta

8

Prueba esto:

var mygames = [{name:'d1',type:'avg'},{name:'cod7',type:'fps'},{name:'war3',type:'rts'}]; 

var mygame = { 
    player: 'viking', 
    games: mygames 
} 
var template = '{{player}} is a good guy<br /> <ul>{{#games}}<li>name:{{name}} and type:{{type}} </li>{{/games}}</ul>'; 
var html = Mustache.to_html(template, mygame); 
var con = document.getElementById('container'); 
con.innerHTML = html; 
+3

Mustache.js no se puede utilizar como una matriz parámetro? No quiero envolver mi matriz en un objeto – vikingmute

2

necesita hacer algo como esto:

var mygames = {games: [{name:'d1',type:'avg'},{name:'cod7',type:'fps'},{name:'war3',type:'rts'}]}; 

var template= "{{#games}} Player name: {{name}} Type: {{type}}{{/games}}"; 

var html = Mustache.to_html(template, mygames); 
var con = document.getElementById('container'); 
con.innerHTML = html; 

o simplemente un bucle sobre MyGames objeto y anexar el html

var html=""; 
var template= "Player name: {{name}} Type: {{type}};" 
for (var i=0;i<mygames.length;i++) 
{ 
    html+=Mustache.to_html(template, mygames[i]); 
} 
var con = document.getElementById('container'); 
con.innerHTML = html; 

Esperanza esto ayuda

35

Usted puede hacerlo de esta manera:

var model = [{name:'d1',type:'avg'},{name:'cod7',type:'fps'},{name:'war3',type:'rts'}]; 
var template = '<ul> {{#.}} <li>name:{{name}} and type:{{type}} </li> {{/.}} </ul>'; 
var html = Mustache.to_html(template, model); 
+0

+1 porque esta es la solución más elegante – Frank

+2

Las otras respuestas solo presentan formas de evitar las circunstancias. Como esto muestra que la sintaxis del bigote realmente le permite usar una matriz como el objeto de datos sin envolverlo en pelusa, esta debería ser realmente la respuesta aceptada. – Semicolon

+0

¡esta debería ser la respuesta correcta! – vNext

Cuestiones relacionadas