要什麼xxforms-iteration-moved
被分派組件是xxforms-iteration-moved
是如何定義的問題。現在,它被分派到移動迭代中的控件。除xxforms-iteration-moved
之外,您可能需要的是處理xforms-enabled
事件。考慮下面的例子:你從一個帶有「a,c,d」的列表開始。如果在「a」之後插入「b」,則新的「b」將得到xforms-enabled
,「c,d」每個都會得到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
組件中的how this is done。
您正在運行哪個XForms處理器? – 2010-11-02 09:48:08