1

我正在使用该tal:repeat语句在另一个表中生成表。可悲的是,我不知道如何在生成时为每个表赋予唯一的 id。我怎样才能做到这一点?

我正在尝试使用:

tal:attributes="id myindex" 

tal:attributes="id string:${myindex}"

但我无法让它工作。

例子:

<table id="tableIngrepen" class="table">
<thead class="header">
<tr>
    <th>Header1</th>
    <th tal:repeat="procedur_headers Procedur_Headers" tal:content="procedur_headers" > </th>
</tr>
</thead>
<tr tal:repeat="diagnoses Diagnoses"> 
    <div tal:define="myindex python:repeat['diagnoses'].index">
        <td ><input type='text' id="dz_code" readonly></input></td> <!-- onfocus="rijencolom($(this).parent().children().index($(this)),$(this).parent().parent().children().index($(this).parent()))" -->
        <td colspan="5">
            <table tal:attributes="id myindex"  class="table table-hover" style="border-style:none">
                <thead class="header">
                    <tr>
                        <th tal:repeat="procedur_headers Procedur_Headers" tal:content="procedur_headers" style="display:none"> </th> <!-- style="display:none"-->
                    </tr>
                </thead>
                <tr tal:repeat="list_procedur List_Procedur[myindex]">
                    <td><input type='text' ></input></td>
                    </tr>
                <tr>
                    <td><input type='text' ></input></td>
                    <td ><input type='text'></input></td>
                    <td><input type='text' ></input></td>
                    <td><input type='text' ></input></td>
                </tr>
            </table>
        </td>
    </div>
</tr>

4

2 回答 2

1

您可以使用每个循环创建的TAL 重复变量:repeat

<table tal:attributes="id string:table-${python:repeat['diagnoses'].index}" 
       class="table table-hover" style="border-style:none">

或使用路径表达式:

<table tal:attributes="id string:table-${path:repeat/diagnoses/index}" 
       class="table table-hover" style="border-style:none">

根据 Chameleon 的配置方式,您可以省略 thepath:python:前缀;无论哪一个是默认表达式类型。页面模板默认为path:表达式,Chameleon 为python:但通常 Plone 集成切换path:以保持兼容性。

映射包含每个循环变量的repeat特殊对象;您的循环使用该名称myindex,因此有一个repeat['diagnoses']对象包含诸如循环索引、迭代奇偶校验(奇数或偶数)甚至循环计数器的罗马数字版本之类的内容。

于 2013-05-10T15:27:34.363 回答
0

如果 Chameleon ZPT 不喜欢字符串语法,您可以使用 python 表达式语法:

<table tal:attributes="id python:'table-' + repeat['diagnoses'].number" 
       class="table table-hover" style="border-style:none">

或者,如果您希望它从零开始:

<table tal:attributes="id python:'table-' + repeat['diagnoses'].index" 
       class="table table-hover" style="border-style:none">
于 2013-05-12T13:11:59.400 回答