handlebars.js Попытка передать массив json во вспомогательную функцию, а затем выполнить его проверку

#json #handlebars.js

#json #handlebars.js

Вопрос:

Я новичок в Handlebars.js и у меня есть объект json, который включает в себя дочерний массив из нескольких объектов. Я выяснил, как получить доступ к данным на веб-странице, используя следующий синтаксис {{{V.0.D}}} V — имя дочернего массива, 0 — эта итерация, а D — конкретное свойство дочернего массива.

Однако у меня возникли проблемы с передачей массива V помощнику и выяснением, как выполнить итерацию по этому массиву, чтобы я мог возвращать данные из одного из дочерних объектов.

Вот мой помощник до сих пор:

 Handlebars.registerHelper('getRegion', function (descData) {
    for (desc in descData) {
        console.log('descData.D:'   desc.D);
    }

    return something;

});
 

Вот мой вызывающий:

 {{getRegion V}}
 

Я продолжаю получать desc.D — неопределенная ошибка.

Я не думаю, что мне нужен помощник по блокам, потому что мне не нужно перечислять все дочерние объекты.

Я уверен, что это просто, но я просто не могу понять, чего мне не хватает. Спасибо.

Ответ №1:

for in должен использоваться для перебора перечислимых свойств объекта. Вот ссылка из MDN.

Ваш помощник должен быть изменен как

 Handlebars.registerHelper('getRegion', function (descData) {
    for (index in descData) {
        console.log('descData.D:'   descData[index].D);
    }

    return something;

});
 

Вот помощник, использующий массив forEach

 Handlebars.registerHelper('getRegion', function (descData) {
    var str = '';
    descData.forEach(function(desc) {
        console.log('descData.D:'   desc.D);
        str  = ' '  desc.D;
    });

    return str ;

});
 

Комментарии:

1. Большое спасибо. Работает отлично.