template guide meteor spacebars

guide - meteor template



DefiniciĆ³n de ayudantes de bloques iterativos en Meteor 0.8 (1)

Hasta la versión 0.8, fue posible utilizar el modo regular de manubrios para definir ayudantes de bloques iterativos, como el popular each_with_key , definido, por ejemplo, aquí de la siguiente manera:

Handlebars.registerHelper("each_with_key", function(obj, fn) { var context, buffer = "", key, keyName = fn.hash.key; for (key in obj) { if (obj.hasOwnProperty(key)) { context = obj[key]; if (keyName) { context[keyName] = key; } buffer += fn(context); } } return buffer; });

Esto ya no funciona en 0.8, y ni la guía de migración ni la documentación de las barras espaciales muestran un ejemplo para esto.

Dado que los helpers bloqueados ahora se tratan como inclusiones, y las inclusiones necesitan devolver una plantilla (o nulo), en lugar de HTML, no tengo ni idea de si esto es posible ni cómo es posible en este momento.


Y justo cuando estaba a punto de darme por vencida, lo resuelvo. De hecho es más fácil y más bonito ahora en 0.8 de lo que era antes. Lo siguiente parece funcionar bien:

JS:

UI.registerHelper(''addKeys'', function (all) { return _.map(all, function(i, k) { return {key: k, value: i}; }); });

HTML:

{{#each addKeys obj}} <div> {{key}}: {{value}} </div> {{/each}}