我想通过 xf:input 询问用户,在某个重复中您想要“多少项目”,然后根据用户的响应,呈现具有该行数的重复(我猜这也会在 xf:instance 中生成)。
我熟悉使用触发器插入和删除行。
我在这里要问的是如何提示用户要创建和呈现的初始行数。
例如,假设用户想要 10 行。我猜重复的数据可能不相关,直到他们回答了那个问题,当他们回答时,一些动作可以动态地创建行,然后使重复的数据相关。
但是如何做到这一点?
12 月 20 日更新
下面的标记显示了一个输入字段,并且更好的形式是在按下按钮时向实例添加行。但是,betterForm 不会在 UI 中显示数据(尽管我猜这完全是一个单独的问题)。我还没有尝试过其他实现。
<xhtml:head>
<xf:model id="m">
<xf:instance id="main-instance">
<data>
<items>
<item1>item 11</item1>
<item2>item 12</item2>
<item3>item 13</item3>
</items>
</data>
</xf:instance>
<xf:instance id="variable">
<variable xmlns="">
<iteration-count/>
</variable>
</xf:instance>
</xf:model>
</xhtml:head>
<xhtml:body>
<!-- Simple field to enter the number of iterations -->
<xf:input ref="instance('variable')/iteration-count">
<xf:label>How many iterations?</xf:label>
</xf:input>
<xf:trigger>
<xf:label>Insert with while</xf:label>
<xf:action ev:event="DOMActivate">
<xf:action while="instance('variable')/iteration-count != 0">
<xf:insert ev:event="DOMActivate" nodeset="items"/>
<xf:setvalue ref="instance('variable')/iteration-count" value=". - 1"/>
</xf:action>
<!--<xf:refresh model="m"/>-->
</xf:action>
</xf:trigger>
<table>
<tbody id="r-attrs" xf:repeat-nodeset="items">
<tr>
<td>
<xf:output ref="item1"></xf:output>
</td>
<td>
<xf:output ref="item2"></xf:output>
</td>
<td>
<xf:output ref="item3"></xf:output>
</td>
</tr>
</tbody>
</table>
</xhtml:body>