Express - 如何渲染包含在另一个 ejs 中的特定 ejs?

问题描述 投票:0回答:0

我有一个 express 应用程序,“/”路由呈现一个 index.ejs 文件,其中包含一些数据。 此文件包含另一个 cars.ejs 文件

<%- include('cars') %>

如果定义了汽车对象,这个 cars.ejs 会呈现一张汽车表:

<% if (typeof cars !== 'undefined') { %> <% const cars = cars ?? []; %>

因此,当客户端调用“/”时,if 条件不满足且汽车表未呈现,这没有问题。

我的问题是当我调用“/cars”路线时:

    router.get('/cars/:key', async function (req, res) {
      const ci = new CarsManager();
      const cars = await ci.getcars(req);
      console.log(cars)
      res.render('cars', { cars: cars });
    });

console.log 正确打印汽车,但服务器在 cars.ejs 文件中生成以下错误:

初始化前无法访问“汽车”。

我不明白为什么我现在收到这个错误,因为已经定义了汽车对象。 发生这种情况是因为 cars.ejs 包含在 index.ejs 中吗?

是否有更好的方法来管理这个用例?

我是否可以使用 ejs 模板有条件地呈现页面的某些部分?

提前谢谢你

node.js express ejs
© www.soinside.com 2019 - 2024. All rights reserved.