Передача массива объектов в партиал - handlebars.js

Я пытаюсь передать массив объектов в частное в качестве аргумента:

{{> partial [{title: "hello", year: "2015"}, {title: "hello2" year: "2015"}] }}

а затем по частям:

<div>

  {{#each this}}
    <label>{{title}}</label>
    <label>{{year}}</label>
  {{/each}}

</div>

... но ничего не появляется.

Есть ли способ передать данные массива в частичное? Заранее спасибо.

1 ответ

Создайте помощник, который анализирует JSON и оберните ваш партиал этим контекстом.

Шаблон:

{{#getJsonContext '[{"title": "hello", "year": "2015"}, {"title": "hello2" "year": "2015"}]'}}
    {{> partial this }}
{{/getJsonContext}}

Обратите внимание, что имена указаны в кавычках, а также значения в строке JSON.

Helper:

Handlebars.registerHelper('getJsonContext', function(data, options) {
   return options.fn(JSON.parse(data));
});

Кредит: https://github.com/assemble/assemble/issues/228

Это должно работать

{{> partial items=this.something }}

в

Handlebars.registerPartial(
    'partial', 
    "<div>{{#each items}}<label>{{title}}</label><label>{{year}}</label>{{/each}}</div>"
);

ввод:

{
    something: [{title: "hello", year: "2015"}, {title: "hello2", year: "2015"}]
}

Кроме того, проблема в объекте JSON.

Другие вопросы по тегам