Не удается напечатать элемент массива в шаблоне руля - PullRequest
0 голосов
/ 14 апреля 2020

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

store. js:

Это то, что я использовал для рендеринга вида руля:

res.render("products.handlebars", { products });

Я зарегистрировал "продукты" прямо перед тем, как они были переданы на строку выше, это массив объектов

и в файле products.handlebars:

выводит весь массив и все содержимое объекта в представлении products.handlebars

{{#each products}}
{{this}}
{{/each}}

но если я хочу напечатать свойство любого из объектов, например, так:

{{#each products}}
{{this.title}}
{{/each}}

ничего не появляется, буквально ничего. без ошибок, без 'undefined', просто ничего.

Я почти уверен, что синтаксис внутри {{this.title}} ошибочен, но я не уверен. Я использовал этот точный код в другом проекте, и он работал нормально. Я не знаю, что я делаю здесь не так.

И для справки я записал в журнал массив, который я передал прямо перед моим res.render, и он выглядел нормально. Вот как выглядят элементы массива (это только 1-й элемент):

{
title: 'Samsung Galaxy S20 Ultra 1TB',
price: 1999.99,
description: 'Lorem ipsum dolor...',
quantity: 10,
category: 'Mobile',
bestSeller: false,
imgPath: '/public/images/products/galaxys20ultra.png',
}

1 Ответ

0 голосов
/ 14 апреля 2020

Я понял это. Недавнее обновление express -handlebars отключило доступ свойств из объектов по умолчанию. Вам необходимо снова включить его в функции app.engine.

https://handlebarsjs.com/api-reference/runtime-options.html#options для контроля доступа к прототипу

...