javascript Handlebars不显示数组元素

uinbv5nw  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(73)

我正在使用Handlebars进行模板化,我正在开发一个Job.js应用程序。我有一个路由,它使用Mongoose从MongoDB获取车站数据并将其传递到Handlebars模板。虽然大部分数据都能正确显示,但我在迭代模板中的数组时遇到了问题。

app.get("/Manager", async (req, res) => {
    try {
        let stationData = await business.getStation(1001);
        console.log("Station Data:", stationData);
        console.log("Fuel Details:", stationData.Fuel);
        res.render('ManagerPage', {
            layout: undefined,
            station: stationData
        });
    } catch (error) {
        console.error("Error fetching station data:", error);
        res.status(500).send("Internal Server Error");
    }
});

字符串
Template:模板

<body>
    <h3>Station Details</h3>
    <h4>Name: {{station.Name}}</h4>
    <h4>Location: {{station.Location}}</h4>
    <h4>Manager: {{station.Manager}}</h4>
    
    <h3>Current Fuel Prices</h3>
    {{#each station.Fuel}}
        <h4>Type: {{this.type}}, Price: {{this.price}}, Remaining: {{this.remaining}}</h4>
    {{/each}}
    
    <a href="#">Delivery</a>
    <a href="#">Sales</a>
</body>
{
  "_id": new ObjectId('654b56af0a2d9b94b4b2c2fa'),
  "StationID": 1001,
  "Name": 'Woqod',
  "Location": 'Duhail',
  "Manager": 'Mubarak Al-Kuwari',
  "Fuel": [
    { type: 'Premium', price: 1.97, remaining: 100 },
    { type: 'Super', price: 2.01, remaining: 90 }
  ]
}

的数据
问题:站点的详细信息显示正确,但是燃料的详细信息(在数组中)没有显示在呈现的页面上。我已经确认getStation函数返回的数据包含正确的燃料详细信息。

2cmtqfgy

2cmtqfgy1#

您不需要在each中使用this来访问数组Fuel的属性typepriceremaining
访问{{#each}}块中属性的语法是{{type}}{{price}}{{remaining}},不带this关键字:

{{#each station.Fuel}}
    <h4>Type: {{type}}, Price: {{price}}, Remaining: {{remaining}}</h4>
{{/each}}

字符串
来源:How To: Handlebars - Iterate over Arrays with the Each Helper

相关问题