如何在 EJS 中包含带参数的模板?
how to include a template with parameters in EJS?
作为一个真正的 EJS 初学者,我的 html 页面中有两个图表,所以我想使用我的部分两次:
<% include partials/spider-chart.ejs %>
但我需要在ejs中传递一些参数来区分图表。
最好的方法是什么?
我认为您想使用相同的 partial ejs 模板渲染两个不同的图表,只需提供不同的数据(在主 ejs 文件中)。
您可以只定义一个变量,它将分配给第一个图表将使用的 data
,而不是包含 chart.ejs
文件,再次更改 data
,并再次包含部分 ejs 文件(chart.ejs),所以现在您有两个文件可以使用相同的变量(数据),但可以根据分配给 data
.[=18= 的值绘制不同的图表]
例如:
<% 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>
此处,当您使用数据时,两个图表访问的数据变量将不同,因为您在每个图表之前为数据重新分配值。
@Naeem Shaikh 解决方案有效。
尽管 include
还为您提供了更直观的方式来包含部分模板,并将上下文变量传递给 documention section of ejs.
中找到的模板
<ul>
<% users.forEach(function(user){ %>
<%- include('user/show', {user: user}); %>
<% }); %>
</ul>
您可以传递单个数据也可以传递多个数据这里是如何做到的
In render funtions
我们可以像这样将多个数据作为一个对象传递
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>
In Partial views
像这样传递数据
<%- include('partials/logout', {name='triyon'}) %>
然后像我们上面那样访问它
<h2> logged out <%= name %> </h2>
这是最好的解决方法,在呈现基本 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' })
作为一个真正的 EJS 初学者,我的 html 页面中有两个图表,所以我想使用我的部分两次:
<% include partials/spider-chart.ejs %>
但我需要在ejs中传递一些参数来区分图表。
最好的方法是什么?
我认为您想使用相同的 partial ejs 模板渲染两个不同的图表,只需提供不同的数据(在主 ejs 文件中)。
您可以只定义一个变量,它将分配给第一个图表将使用的 data
,而不是包含 chart.ejs
文件,再次更改 data
,并再次包含部分 ejs 文件(chart.ejs),所以现在您有两个文件可以使用相同的变量(数据),但可以根据分配给 data
.[=18= 的值绘制不同的图表]
例如:
<% 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>
此处,当您使用数据时,两个图表访问的数据变量将不同,因为您在每个图表之前为数据重新分配值。
@Naeem Shaikh 解决方案有效。
尽管 include
还为您提供了更直观的方式来包含部分模板,并将上下文变量传递给 documention section of ejs.
<ul>
<% users.forEach(function(user){ %>
<%- include('user/show', {user: user}); %>
<% }); %>
</ul>
您可以传递单个数据也可以传递多个数据这里是如何做到的
In render funtions
我们可以像这样将多个数据作为一个对象传递
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>
In Partial views
像这样传递数据
<%- include('partials/logout', {name='triyon'}) %>
然后像我们上面那样访问它
<h2> logged out <%= name %> </h2>
这是最好的解决方法,在呈现基本 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' })