xxforms-iteration-moved
分派到哪些组件取决于如何xxforms-iteration-moved
定义。现在,它被分派到移动的迭代内部的控件。xforms-enabled
除了xxforms-iteration-moved
. _ 考虑以下示例:您从一个带有“a、c、d”的列表开始。如果在“a”之后插入“b”,那么新的“b”会得到 an xforms-enabled
,“c, d”会得到 a xxforms-iteration-moved
。因此,通过对这两个事件做出反应,您应该能够根据需要(重新)初始化您的组件。
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
<xhtml:head>
<xhtml:title>Iteration moved</xhtml:title>
<xforms:model>
<xforms:instance>
<instance>
<letter>a</letter>
<letter>c</letter>
<letter>d</letter>
<letter>e</letter>
</instance>
</xforms:instance>
</xforms:model>
</xhtml:head>
<xhtml:body>
<fr:button>
<xforms:label>Insert b</xforms:label>
<xforms:insert ev:event="DOMActivate" nodeset="letter" at="1" position="after" origin="xxforms:element('letter', 'b')"/>
</fr:button>
<fr:button>
<xforms:label>Delete c</xforms:label>
<xforms:delete ev:event="DOMActivate" nodeset="letter[. = 'c']"/>
</fr:button>
<xforms:repeat id="letter-repeat" nodeset="letter">
<xforms:output id="letter" value=".">
<xforms:message ev:event="xxforms-iteration-moved" level="modal" value="concat('xxforms-iteration-moved : ', .)"/>
<xforms:message ev:event="xforms-enabled" level="modal" value="concat('xforms-enabled : ', .)"/>
</xforms:output>
</xforms:repeat>
</xhtml:body>
</xhtml:html>
我应该补充一点,如果你希望你的组件被重复使用(迟早每个组件都是),现在,因为重复在客户端是如何工作的,如果你正在做一些工作来初始化组件xforms-enabled
,您很可能也需要在xxforms-iteration-moved
. 例如,看看这是如何在fr:button
组件中完成的。