Подтвердить что ты не робот

Использование @index в meteor # итератор не работает

почему это не работает в метеор? https://github.com/wycats/handlebars.js/issues/250

4b9b3361

Ответ 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;
};