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}}