javascript - ejemplos - ¿Puede el bigote iterar una matriz de nivel superior?
array en javascript ejemplos (5)
¡No creo que bigote pueda hacer esto! (sorprendentemente) Puede iterar sobre una lista de objetos, y luego acceder a los atributos de cada objeto, ¡pero parece que no puede iterar sobre una simple lista de valores!
Entonces, debes transformar tu lista en:
[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ]
y luego tu plantilla sería:
<ul>
{{#the_list}}
<li>{{value}}</li>
{{/the_list}}
</ul>
Para mí, esto parece ser un problema grave con Moustache: ¡cualquier sistema de plantillas debería poder recorrer una lista de valores simples!
Mi objeto se ve así:
[''foo'',''bar'',''baz'']
Y quiero usar una plantilla de bigote para producir algo como esto:
"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"
¿Pero cómo? ¿Realmente tengo que convertirlo en algo así primero?
{list:[''foo'',''bar'',''baz'']}
Basándose en la respuesta de @danjordan, esto hará lo que quieras:
Mustache.render(''<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>'',[''foo'',''bar'',''baz'']);
regresando
<ul><li>foo</li><li>bar</li><li>baz</li></ul>
Los siguientes son los ejemplos para renderizar una matriz multidimensional en una plantilla:
Ejemplo 1
''use strict'';
var Mustache = require(''mustache'');
var view = {test: ''div content'', multiple : [''foo'', ''bar''], multiple_2 : [''hello'', ''world'']};
var template = ''<div>{{test}}</div><ul>{{#multiple}}<li>{{.}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{.}}</li>{{/multiple_2}}</ul>'';
var output = Mustache.render(template, view);
console.log(output);
Ejemplo 2
''use strict'';
var Mustache = require(''mustache'');
var view = {test: ''div content'', multiple : [{name: ''foo'', gender: ''male''}, {name: ''bar'', gender: ''female''}], multiple_2 : [{text: ''Hello'', append: ''**'', prepend: ''**''}, {text: ''World'', append: ''**'', prepend: ''**''}]};
var template = ''<div>{{test}}</div><ul>{{#multiple}}<li>Hello my name is {{name}}. And I am {{gender}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{prepend}}_{{text}}_{{append}}</li>{{/multiple_2}}</ul>'';
var output = Mustache.render(template, view);
console.log(output);
Para ejecutar la prueba, guarde los ejemplos anteriores en el archivo llamado ''test.js'', ejecute el siguiente comando en la línea de comando
nodejs test.js
Puedes hacerlo así ...
Mustache.render(''<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>'', [''foo'',''bar'',''baz'']);
También funciona para cosas como esta ...
var obj = [{name: ''foo''}, {name: ''bar''}];
var tmp = ''<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>'';
Mustache.render(tmp, obj);
Tuve el mismo problema esta mañana y después de un poco de experimentación descubrí que puedes usar el {{.}} Para referirte al elemento actual de una matriz:
<ul>
{{#yourList}}
<li>{{.}}</li>
{{/yourList}}
</ul>