作为EJS的真正初学者,我在html页面中有两个图表,所以我想使用我的部分两次:
<% include partials/spider-chart.ejs %>
但是我需要在ejs中传递一些参数来区分图形。
最好的方法是什么?
答案 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' })