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

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

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

а затем на частичном:

<div>

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

</div>

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

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


person Perry    schedule 21.05.2015    source источник
comment
Почему вы хотите передать эти данные встроенными? Я имею в виду, почему не {{>partial arrayData}}?   -  person raidendev    schedule 21.05.2015


Ответы (2)


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

Шаблон:

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

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

Помощник:

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

Кредит: https://github.com/assemble/assemble/issues/228#issuecomment-20853985

person switang    schedule 23.10.2015

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

{{> partial items=this.something }}

in

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

вход:

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

Также есть проблема в объекте JSON.

person Akku    schedule 06.10.2020