在Template Toolkit中包含一次页面

时间:2012-07-24 11:15:34

标签: perl template-toolkit

使用模板工具包我已经提出了以下内容。 (我在一页上多次运行此模板。)

<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 个答案:

答案 0 :(得分:1)

您在此处向我们展示的代码仅显示my.js行一次。它在任何循环之外,因此不可能多次显示。

如果您不止一次显示它,那么您就不会使用您向我们展示的代码。或者,示例中的代码周围有更多代码。你是否有另一个显示多个表的循环?

通常,您的问题的解决方案是将显示Javascript文件的代码移动到任何循环之外 - 因此它只显示一次。但是,如果由于某种原因这不是一个选项(我真的不明白为什么它不会)那么你可以使用循环变量只在第一个(或者可能是最后一个)迭代上输出Javascript循环。像这样:

[% FOR var IN list;
     var.something_useful;
     myJS IF loop.first;
   END %]