почему это не работает в метеор? https://github.com/wycats/handlebars.js/issues/250
Использование @index в meteor # итератор не работает
Ответ 1
Он еще не реализован в метеорной версии рулей; есть тонкость относительно реактивности @index
рендеринга. Подробнее об этом можно прочитать здесь: https://github.com/meteor/meteor/issues/489#issuecomment-11270564
Ответ 2
Это определенно расстройство для меня. Тем временем я сделал помощник руля, чтобы разобрать что-либо в именах "ключ" и "значение":
Handlebars.registerHelper('key_value', function(context, options) {
var result = [];
_.each(context, function(value, key, list){
result.push({key:key, value:value});
})
return result;
});
Это будет использоваться с оператором #each
, например:
<dl class="attributes">
{{#each key_value attributes}}
<dt>{{key}}</dt><dd>{{value}}</dd>
{{/each}}
</dl>
Ответ 3
Другой способ заставить его работать - использовать стандартный помощник шаблона Meteor с функцией map cursor.
Вот пример, показывающий, как вернуть индекс при использовании каждого с коллекцией:
index.html:
<template name="print_collection_indices">
{{#each items}}
index: {{ this.index }}
{{/each}}
index.js:
Items = new Meteor.Collection('items');
Template.print_collection_indices.items = function() {
var items = Items.find().map(function(doc, index, cursor) {
var i = _.extend(doc, {index: index});
return i;
});
return items;
};