web-dev-qa-db-ja.com

EJSにパラメーター付きのテンプレートを含める方法

EJSの本当の初心者として、htmlページに2つのチャートがあるので、パーシャルを2回使用したいと思います。

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

しかし、グラフを区別するために、ejs内でいくつかのパラメーターを渡す必要があります。

最善の方法は何ですか?

29
Orkun Ozen

@Naeem Shaikhソリューションが機能します。 includeを使用すると、部分的なテンプレートを含めたり、コンテキスト変数を ejsのドキュメントセクション にあるように渡す直観的な方法も提供されます。

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

同じpartialejsテンプレートを使用して、(メインejsファイル内で)異なるデータを提供するだけで、2つの異なるチャートをレンダリングしたいと思います。

変数を定義するだけで、dataに割り当てられ、最初のチャートで使用されますが、chart.ejsファイル、再度dataを変更し、部分的なejsファイル(chart.ejs)を再び含めるため、同じ変数(データ)を使用できる2つのファイルがありますが、値に基づいて異なるチャートをプロットできます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を使用するものです

spider-chart.ejs

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

ここで、データを使用すると、すべてのチャートの前にデータの値を再割り当てするため、両方のチャートでアクセスされるデータ変数は異なります。

31
Naeem Shaikh

ここでは、単一のデータと複数のデータを渡すことができます

レンダリング機能で

このように複数のデータをオブジェクトとして渡すことができます

_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>_

1
Hadi Mir

これは、ベース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' })
0
akzarma