handlebars.js

Iterando sobre el bucle "for" básico usando Handlebars.js



(4)

Este fragmento se ocupará del bloque else en caso de que n se presente como valor dinámico, y proporcionará la variable de contexto opcional @index , también mantendrá el contexto externo de la ejecución.

/* * Repeat given markup with given times * provides @index for the repeated iteraction */ Handlebars.registerHelper("repeat", function (times, opts) { var out = ""; var i; var data = {}; if ( times ) { for ( i = 0; i < times; i += 1 ) { data.index = i; out += opts.fn(this, { data: data }); } } else { out = opts.inverse(this); } return out; });

Soy nuevo en Handlebars.js y recién comencé a usarlo. La mayoría de los ejemplos se basan en iterar sobre un objeto. Quería saber cómo usar los manubrios en Basic for loop.

Ejemplo.

for(i=0 ; i<100 ; i++) { create li''s with i as the value }

¿Cómo se puede lograr esto?


La mejor respuesta aquí es buena, si quiere usar el último / primer / índice, puede usar el siguiente

Handlebars.registerHelper(''times'', function(n, block) { var accum = ''''; for(var i = 0; i < n; ++i) { block.data.index = i; block.data.first = i === 0; block.data.last = i === (n - 1); accum += block.fn(this); } return accum; });

y

{{#times 10}} <span> {{@first}} {{@index}} {{@last}}</span> {{/times}}


No hay nada en los manillares para esto, pero puede agregar sus propios ayudantes con la suficiente facilidad.

Si solo quieres hacer algo n veces, entonces:

Handlebars.registerHelper(''times'', function(n, block) { var accum = ''''; for(var i = 0; i < n; ++i) accum += block.fn(i); return accum; });

y

{{#times 10}} <span>{{this}}</span> {{/times}}

Si quería un entero for(;;) loop, entonces algo como esto:

Handlebars.registerHelper(''for'', function(from, to, incr, block) { var accum = ''''; for(var i = from; i < to; i += incr) accum += block.fn(i); return accum; });

y

{{#for 0 10 2}} <span>{{this}}</span> {{/for}}

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


Si te gusta CoffeeScript

Handlebars.registerHelper "times", (n, block) -> (block.fn(i) for i in [0...n]).join("")

y

{{#times 10}} <span>{{this}}</span> {{/times}}