dentro - uso array javascript




I baffi possono iterare un array di primo livello? (4)

Basandosi sulla risposta di @ danjordan, questo farà ciò che vuoi:

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);

ritorno:

<ul><li>foo</li><li>bar</li><li>baz</li></ul>

Il mio oggetto ha questo aspetto:

['foo','bar','baz']

E voglio usare un modello di baffi per produrre qualcosa di simile a questo:

"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"

Ma come? Devo davvero immergerlo in qualcosa come questo prima?

{list:['foo','bar','baz']}

Di seguito sono riportati gli esempi per il rendering di matrice multidimensionale in un modello:

Esempio 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);

Esempio 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);

Per l'esecuzione di test, salvare gli esempi precedenti nel file chiamato 'test.js', eseguire il comando seguente in riga di comando

nodejs test.js

Non credo che i baffi possano farlo! (Sorprendentemente) È possibile eseguire iterazioni su un elenco di oggetti e quindi accedere agli attributi di ciascun oggetto, ma non sembra che iterare su un semplice elenco di valori!

Quindi, devi trasformare la tua lista in:

[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ] 

e quindi il tuo modello sarebbe:

<ul>
  {{#the_list}}
  <li>{{value}}</li>
  {{/the_list}}
</ul>

Per me, questo sembra un grave problema con Mustache - qualsiasi sistema di template dovrebbe essere in grado di scorrere su un elenco di valori semplici!


Puoi farlo in questo modo ...

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>', ['foo','bar','baz']);

Funziona anche per cose come questa ...

var obj = [{name: 'foo'}, {name: 'bar'}];
var tmp = '<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>';
Mustache.render(tmp, obj);




mustache