【问题标题】:Include on page once in Template Toolkit在模板工具包中包含一次
【发布时间】:2012-07-22 16:49:41
【问题描述】:

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

<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 %] 一次?因为是同一个脚本?

【问题讨论】:

  • 它只在输出中出现一次。 (并且您的 HTML 需要引起 validator 的注意
  • @Quentin 它一遍又一遍地显示
  • 我也不明白问题出在哪里。发布更多输出。否则我们看不到你的意思。
  • 我认为您的 &lt;/table&gt;[% myJS %] 标记可能错误地位于循环 [% END %] 块中。没有理由重复它(基于您提供的有限代码)
  • @BrianPhillips 谢谢我已经查看了我的代码,并且我在页面上多次运行模板。所以 [% myJS %] 每个模板运行一次,这是不必要的有没有办法说只在页面上显示一次,而不管它在模板中运行多少次?

标签: perl template-toolkit


【解决方案1】:

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

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

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

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

【讨论】:

  • 同意,我认为他拼错了结束标签之类的。
  • 你说得对,它只显示一次,我很困惑,因为模板在页面上多次出现。我已在问题中添加了更多信息,谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 2012-08-15
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多