在我的表单中,我希望在发布后加载表单后调用Web服务。我为它创建了自定义XBL控件,我有:
<xf:group id="component-group">
<xf:action ev:event="xforms-enabled" ev:target="component-group">
<xf:send ev:event="xforms-enabled" submission="my-submission"/>
</xf:action>
</xf:group>
但它没有按预期工作:每次我在FormBuilder中添加新元素或更改其他控件的名称时,都会发送我的提交。一般来说,当我的表格以某种方式改变时,会发送提交。
现在我希望只有在我发布表单时才会发送提交,而有人会打开它来填充(当然,当我按下&#34; Test&#34;在FormBuilder中时,我想它就是与出版后的填写表格相同。)
我正在尝试这样的事情:
<xf:group id="component-group">
<xf:action ev:event="xforms-model-construct-done" ev:target="component-group">
<xf:send ev:event="xforms-model-construct-done" submission="my-submission"/>
</xf:action>
</xf:group>
不幸的是它没有工作,这样就完全没有发送提交。有什么想法吗?
答案 0 :(得分:1)
这是因为XBL组件在设计时也是 live 。因此,您需要一种方法来测试组件是否在Form Builder中运行。
实际上应该有一个函数,但是没有(我将这个添加到我们应该添加到API here的函数列表中)。你可以这样做:
<xf:group id="component-group">
<xf:var name="fr-params" value="xxf:instance('fr-parameters-instance')"/>
<xf:action
event="xforms-enabled"
target="component-group"
if="not($fr-params/app = 'orbeon' and $fr-params/form = 'builder')">
<xf:send submission="my-submission"/>
</xf:action>
</xf:group>
一些小评论:
event
属性ev
前缀