На какие компоненты отправляется xxforms-iteration-moved
, зависит от того, как определяется xxforms-iteration-moved
.Прямо сейчас, это отправлено к элементам управления в итерациях, которые переместились.Вам может понадобиться обработать событие xforms-enabled
в дополнение к xxforms-iteration-moved
.Рассмотрим следующий пример: вы начинаете со списка «a, c, d».Если вы вставите «b» после «a», то новые «b» получат 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
.