-2

テンプレートツールキットを使用して、私は以下を思いついた。(このテンプレートを1ページで複数回実行しています。)

<table>
<tr>
    <th>Title</th>
</tr>
[% FOREACH t = Testing %]
    [% IF t.isEven %]
    <tr><td>Goodbye World</td></tr>
    [% ELSE %]
    <tr><td>hello world</td></tr>

    size() = [% loop.size %]</br>
    max () = [% loop.max %]</br>
    index () = [% loop.index %]</br>
    count () = [% loop.count %]</br>
    first () = [% loop.first %]</br>
    last () = [% loop.last %]</br>
    prev () = [% loop.prev %]</br>
    next () = [% loop.next %]</br>

    [% END %]
[% END %]
</table>
[% myJS %]

これを出力します。(スペースを節約するために、ここには最初と最後のtrのみを含めました)。

<table>
    <tr>
        <th>Title</th>
    </tr>
<tr class="1"><td>hello world</td></tr>
size() = 5</br>
max () = 4</br>
index () = 0</br>
count () = 1</br>
first () = 1</br>
last () = 0</br>
prev () = </br>
next () = HASH(0x1d6daad0)</br>

<tr class="4"><td>hello world</td></tr>
size() = 5</br>
max () = 4</br>
index () = 4</br>
count () = 5</br>
first () = 0</br>
last () = 1</br>
prev () = HASH(0x1cbfda20)</br>
next () = HASH(0x1d6e9c10)</br>
</table>
<script src ="js/my.js"></script><table>

ループが終了するまで何度も繰り返します。ページに[%myJS%]を1回だけ含める方法はありますか?同じスクリプトなので?

4

1 に答える 1

1

ここに示したコードは、my.js行を1回だけ表示します。ループの外側にあるため、複数回表示することはできません。

複数回表示される場合は、表示されているコードを使用していません。または、例のコードを囲むコードが他にもあります。複数のテーブルを表示する別のループがありますか?

一般に、問題の解決策は、Javascriptファイルを表示するコードをループの外に移動することです。つまり、1回だけ表示されます。ただし、それが何らかの理由でオプションではない場合(そして、なぜそうならないのか本当にわかりません)、ループ変数を使用して、最初の(またはおそらく最後の)反復でのみJavascriptを出力できます。ループの。このようなもの:

[% FOR var IN list;
     var.something_useful;
     myJS IF loop.first;
   END %]
于 2012-07-24T12:24:16.050 に答える