Как включить шаблон с параметрами в EJS?
Как настоящий новичок в EJS, у меня есть две диаграммы на моей странице html, поэтому я хочу использовать свою партию дважды:
<% include partials/spider-chart.ejs %>
Но мне нужно передать некоторые параметры внутри ejs, чтобы различать графики.
Каков наилучший способ?
Ответы
Ответ 1
Решение @Naeem Shaikh.
Хотя include
также дает вам более интуитивно понятный способ включения частичного шаблона, а также передачи переменных контекста, как показано в разделе документации ejs.
<ul>
<% users.forEach(function(user){ %>
<%- include('user/show', {user: user}); %>
<% }); %>
</ul>
Ответ 2
Я думаю, вы хотите отобразить две разные диаграммы с использованием одного и того же частичного шаблона ejs, просто предоставив разные данные (в основном файле ejs).
Вы можете просто определить переменную, которая будет назначена data
, которую будет использовать первый график, чем включить файл chart.ejs
, снова изменить data
и включить файл частичного ejs (диаграмма .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>
здесь, когда вы используете данные, переменная данных, к которой обращаются обе диаграммы, будет отличаться, потому что вы переназначаете значения данных перед каждым графиком.
Ответ 3
Вы можете передать как один, так и несколько данных, вот как это сделать
В рендере
Мы можем передать несколько данных как объект, подобный этому
app.get("/account", function(req, res) {
res.render("account", {
name: 'Jon Snow',
age: 35
});
});
Ответ 4
Это лучший обходной путь, просто передавая имя файла представления как контекст при рендеринге базового файла 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' })