Составители:
Рубрика:
30
<th>#</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tr tal:repeat="item container/objectValues">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/id">Id</td>
<td tal:content="item/meta_type">Meta-Type</td>
<td tal:content="item/title">Title</td>
</tr>
</table>
Оператор повторения поочередно помещает объекты из списка в
переменную
item, и делает копию строки, используя эту переменную.
Значение
item/id в каждой строке представляет Id объекта, для ко-
торого создается строка.
Условные элементы
Условия можно вставлять используя выражение tal:condition
<table border="1" width="100%">
<tr>
<th>#</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tbody tal:repeat="item container/objectValues">
<tr bgcolor="#EEEEEE" tal:condition="repeat/item/even">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/id">Id</td>
<td tal:content="item/meta_type">Meta-Type</td>
<td tal:content="item/title">Title</td>
</tr>
<tr tal:condition="repeat/item/odd">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/id">Id</td>
<td tal:content="item/meta_type">Meta-Type</td>
<td tal:content="item/title">Title</td>
</tr>
</tbody>
</table>
Посмотрите на шаблон и вы увидите две строки. Если не добавлять
оператор tal:condition в эти строки, то шаблон генерировал бы обе
строки для каждого элемента, это не совсем то что вы хотели бы. Опе-
ратор tal:condition в первой строке гарантирует что эта строка
включает только четные повторения, в то время как условие во второй
строке указывает на нечетные повторения.
31
Оператор tal:condition ничего не делает если его выражение
имеет значение true и просто удаляет весь тэг, включая его содержи-
мое, если значение выражения false. Свойства odd и even переменной
repeat/item возвращают ноль или единицу. Число ноль, пустая
строка, пустой список и встроенная переменная nothing все они
имеют значения false. Противоположное значение true, включающее
не нулевое число и строки с любыми символами (даже пробелы).
Определение переменных
Оператор tal:define создает переменную items и его можно ис-
пользовать ее где-нибудь в тэге
table.
<table border="1" width="100%"
tal:define="items container/objectValues"
tal:condition="items">
<tr>
<th>#</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tbody tal:repeat="item items">
Обратите также на то что вы можете иметь два TAL атрибута в од-
ном и том же тэге
table. В первом определяется переменная items,
во втором
items используется в условии, определяющем, какое из
двух значений она имеет false(пустая последовательность) или true.
На использование TAL накладываются следующие ограничения:
1. Только один оператор каждого типа может использоваться в
пределах .одного тэга. Дело в том, что HTML не позволяет не-
скольким атрибутам иметь одно и тоже имя, вы не можете иметь
два оператора tal:define в пределах одного тэга.
2. Оба оператора tal:content и tal:replace не могут ис-
пользоваться в одном и том же тэге одновременно, так как эти
функции, в таком случае, конфликтуют между собой.
3. Последовательность в которой вы записываете TAL атрибуты в
тэге не совпадает с последовательностью их выполнения. В ка
-
ком бы порядке вы их не написали, выполняются они всегда в
следующей последовательности: define, condition,
repeat, content / replace, attributes.
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »