Проблема доступа к определенным элементам всех объектов в массиве с помощью Handlebars - PullRequest
0 голосов
/ 16 ноября 2018

Я относительно новичок в Handlebars, так что это может быть что-то простое, что я упускаю, но я не могу вывести конкретные элементы каждого объекта в массиве. Я просмотрел несколько постов и прочитал документацию по рулю, но пока не нашел решения. В основном я пытаюсь вывести информацию о доступности для ряда временных интервалов и их статусов, назначенных одному элементу. Вот мой код ...

Данные

Pitch: {
"name": "test",
"price": 11,
"city": "testCity",
"availability": [
    {
        "status": "reserved",
        "dt": "2018-11-16T20:00:00Z"
    },
    {
        "status": "available",
        "dt": "2018-11-16T19:00:00Z"
    }
]
}

index.js

router.get('/availability/:id', function(req, res, next) {
Pitch.findById(req.params.id, function (err, docs){
    var indPitch = [];
    indPitch.push(docs);

    res.render('pitch/availability', { title: 'Availability', indPitch: indPitch });

});

availability.hbs

{{#each indPitch}}
        <h3><a href="/availability/{{ id }}">{{ name }}</a></h3>
        <p class = "description">{{ city }}</p>
        {{#each availability}}
          {{status}}
          {{dt}}
        {{/each}}
        <p class = "description">Price per hour : €{{ price }}</p>
        <a href="/reserve/{{id}}" class="btn btn-primary pull-right" role="button">Select</a>
{{/each}}

С указанным выше кодом руля на экран выводятся только город и цена. Если я изменю {{#each Availability}} на {{#each this}}, а затем получу доступ к объекту как {{Availability. [0] .status}} или {{Availability. [1] .dt}} и т. Д. Затем я могу вывести этот элемент на экран.

Но, что мне нужно сделать, это просмотреть цикл «Доступность» для элемента и отобразить все дату / время и их статус. Есть идеи, что я делаю не так? Если вам нужна дополнительная информация, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Хорошо, так что после нескольких часов попыток каждой комбинации #each this и #each Наличие, в конце концов, все заработало. Размещение ответа здесь, если у кого-то есть такая же проблема ...

Мне пришлось вложить {{#each availablebilty}} внутри {{#each this}} следующим образом ...

{{#each indPitch}}
<h3><a href="/availability/{{ id }}">{{this.name }}</a></h3>
<p class = "description">{{ this.city }}</p>
{{#each this}}    
    {{#each availability}}
        {{status}}
        {{dt}}
    {{/each}}
{{/each}}
<p class = "description">Price per hour : €{{ this.price }}</p>
<a href="/reserve/{{this.id}}" class="btn btn-primary pull-right" role="button">Select</a>
{{/each}}
0 голосов
/ 16 ноября 2018

просто используйте это перед каждым элементом, это должно работать

 {{#each indPitch}}
    <h3><a href="/availability/{{ id }}">{{this.name }}</a></h3>
    <p class = "description">{{ this.city }}</p>
    {{#each availability}}
      {{this.status}}
      {{this.dt}}
    {{/each}}
    <p class = "description">Price per hour : €{{ this.price }}</p>
    <a href="/reserve/{{this.id}}" class="btn btn-primary pull-right" role="button">Select</a>

{{/}} каждый

...