如何在EJS中包含带参数的模板?

时间:2015-03-22 16:01:48

标签: ejs

作为EJS的真正初学者,我在html页面中有两个图表,所以我想使用我的部分两次:

<% include partials/spider-chart.ejs %>

但是我需要在ejs中传递一些参数来区分图形。

最好的方法是什么?

4 个答案:

答案 0 :(得分:63)

@Naeem Shaikh解决方案有效。 虽然include也为您提供了更直观的方式来包含部分模板,并将上下文变量传递给documention section of ejs中的变量。

<ul>
  <% users.forEach(function(user){ %>
      <%- include('user/show', {user: user}); %>
  <% }); %>
</ul>

答案 1 :(得分:31)

我认为你想使用相同的部分 ejs模板渲染两个不同的图表,只需提供不同的数据(在主ejs文件中)。

您可以定义一个变量,该变量将分配给第一个图表将使用的data,而不是包含chart.ejs文件,再次更改data,并包含再次部分ejs文件(chart.ejs),所以现在你有两个文件可以使用相同的变量(数据),但可以根据分配给data的值绘制不同的图表。

例如:

<% var data= 'data to be used by first chart(parameter)'; %>
<% include partials/spider-chart.ejs %>

// re-initializing data for second chart
<% data= 'data to be used by second chart(parameter)'; %>
<% include partials/spider-chart.ejs %>

您的spider-chart.ejs文件可能会使用data

<强>蜘蛛chart.ejs

    <li>
        <%= data %> // just an example
    </li>

这里,当您使用数据时,两个图表访问的数据变量将不同,因为您在每个图表之前重新分配数据的值。

答案 2 :(得分:1)

您可以传递单个或多个数据,此处是操作方法

  

渲染功能中

我们可以像这样传递多个数据作为对象

app.get("/account", function(req, res) {
  res.render("account", {
    name: 'Jon Snow',
    age: 35
  });
});

然后可以使用像这样的ejs简单模板标签访问account内部的数据

<h2> hello <%= name %> </h2> <p> your age is <%= age %> </p>

  

在部分视图中

像这样传递数据

<%- include('partials/logout', {name='triyon'}) %>

像上面一样

进行访问

<h2> logged out <%= name %> </h2>

答案 3 :(得分:1)

这是最好的解决方法,只需在呈现基本ejs文件时将视图文件名作为上下文传递。

/base.ejs:

<html>
    <%- include(content) %>
</html>

/extra.ejs:

<div> some content which is to be added in base ejs file </div>

/controller.js:

res.render('base', { content: 'extra' })