Подтвердить что ты не робот

Как включить шаблон с параметрами в EJS?

Как настоящий новичок в EJS, у меня есть две диаграммы на моей странице html, поэтому я хочу использовать свою партию дважды:

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

Но мне нужно передать некоторые параметры внутри ejs, чтобы различать графики.

Каков наилучший способ?

4b9b3361

Ответ 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' })