首页 > 解决方案 > 无法访问 EJS 模板中包含部分的对象

问题描述

我正在尝试将一个对象发送到我的应用程序中所有 EJS 模板中都存在的侧边菜单。

大约有 10 个 EJS 模板由 10 个路由器端点呈现。以下是典型端点的样子:

router.get( "/example", ( req, res ) => {
    res.render( "../views/example.ejs" );
} );

在所有模板中,我有 3 个include部分:header, footer and aside menu.

以下是典型模板的外观:

<%- include ("./partials/header") %>

// some body content

<%- include ("./partials/asidemenu") %>

<%- include ("./partials/footer") %>

我在文件系统中有这个数组,它由我需要在asidemenu模板中传递的数据对象组成。

到目前为止我尝试了什么:

我在端点中获取数据并将其res.render作为第二个参数放入:

{ data: data }

我可以访问相应 EJS 模板中的数据,方法是使用它作为第二个参数<%= data %>放入partials:include

<%- include ("./partials/asidemenu", { data: <%= data %> }) %>.

然后在asidemenu.ejs,我试图访问数据,<%= data %>但我得到了data is undefined

我在这里做错了什么?

标签: javascriptnode.jsexpressejs

解决方案


将数据变量传递给包含时,您需要删除插值标记。

<%- include("./partials/asidemenu", { data: data }) %>

推荐阅读