Почему использование {{@}} в шаблоне Meteor вызывает ошибки?

С помощью простого кода

{{#each array}}
{{@index}}: {{this}}
{{/each}}

появляется поток ошибок. То же самое происходит с {{@key}} для объектов. Почему это происходит?


person Euphe    schedule 25.06.2013    source источник


Ответы (2)


Глядя на источник (по адресу https://github.com/meteor/meteor/blob/master/packages/handlebars/parse.js): не похоже, что {{@ ..}} набор выражений поддерживается версией Handlebars, упакованной с Meteor.

person Tarang    schedule 25.06.2013
comment
Спасибо, не знал этого. - person Euphe; 25.06.2013

Это, безусловно, разочарование и для меня. Тем временем я сделал помощник руля, чтобы анализировать что-либо в именованных объектах «ключ» и «значение»:

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>

(Я также только что разместил это в связанном использовании @index в метеор #каждый итератор не работает)

person Mike Marcacci    schedule 02.10.2013
comment
Более краткой реализацией было бы использование _.map вместо _.each: return _.map(context, function(value, key) { return {key: key, value: value}; }); - person sbking; 11.02.2014
comment
Однако обратите внимание, что ваш обходной путь значительно влияет на производительность рендеринга приложения. Всякий раз, когда какой-либо отдельный элемент изменяется, каждый элемент будет перерисован. Это может быть проблемой для больших коллекций. - person sbking; 11.02.2014
comment
Ах, да – это определенно хороший момент. Я думаю, что Meteor решит эту проблему в более поздних версиях. Их новая демонстрация пользовательского интерфейса описывала гораздо лучшее управление разметкой. Надеюсь, он будет включать в себя списки типов ключей/значений. - person Mike Marcacci; 11.02.2014