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