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