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>