EJSでinclude先に配列を渡す方法
もともとは、スライダー部分をテンプレートにして、ページによって読み込む画像を変える仕組みを作る時に発見?した方法。 読み込み元にグローバル変数で配列を作る。
code:javascript
<%#グローバル変数の配列でスライダー用画像を設定。この形じゃないと動かない(多分)%>
<% img = [ {thumb: '/images/lineup/timegifttowel/timegift-slider-01.jpg'},
{thumb: '/images/lineup/timegifttowel/timegift-slider-02.jpg'} ] %>
ejsではローカル変数をinclude先に渡せないのでグローバル変数として宣言。
グローバル変数の影響範囲は宣言したejsファイル内だけっぽい。
他のejsファイルと同じ変数名を宣言しても問題なかった。
渡したい値をハッシュにしておくと、ejsのinclude関数で渡せるパラメータの形になるから、動いているのかな……? どういう原理で動いているか実はわかってない……。
ハッシュを増やしてテンプレートの方に記述を追加すれば、メインとサムネイルの画像を出し分けるとかも出来るのでは?(試してないから確証はない) 配列を渡される側
code:javascript
<div class="item-ImgSlider-wrapper swiper-wrapper">
//変数imgの中に入っている配列分処理する。だと思っている
<% for (var i in img ) { %>
<div class="item-ImgSlider-item swiper-slide">
<img src="<%- imgi.thumb %>" alt="" /> </div>
<% }; %>
</div>
array.forEach()だと配列の中身を展開できなかったので、for...inで動かしてみた。