1

我在基于 xforms 的表单中有以下代码:

<!--<xforms:action ev:event="xforms-select" target="retrievalControl-control">-->
    <xforms:action ev:event="xforms-ready" target="fr-form-model">
<xforms:send submission="loadConfiguration"/>
    </xforms:action>

如果我取消注释上面的注释行(并注释掉包含 xforms-ready 的行),我会得到预期的结果(即,在选择目标控件时调用提交),但是如果我保持上面的代码不变,那么我可以在日志中看到已针对所述模型触发了 xforms-ready 事件,但未调用此提交。提交实际上是在正确的地方定义的(即所引用的模型,实际上是我基于xforms的表单中定义的唯一模型)

在 xforms-ready 这个模型上没有调用提交的原因可能是什么?

4

2 回答 2

1

xforms-ready事件被分派给模型,因此您可以:

  • 正如您在自己的答案中提到的那样,将事件处理程序放在模型中。
  • 将它放在其他任何地方,但添加属性ev:observer="fr-form-model",假设您的模型的 id 是fr-form-model。(您还将找到有关ev:observerev:target属性的更多信息。)
于 2010-12-29T18:45:36.033 回答
0

通过将上面的代码片段移动到模型本身而不是其他地方来解决这个问题(之前存在于 xhtml 主体中,而模型位于 xhtml 头部中)。当放置在模型本身中时,下面提到的也可以工作:

<xforms:action ev:event="xforms-ready">
    <xforms:send submission="loadConfiguration"/>
</xforms:action>

<xforms:send ev:event="xforms-ready" submission="loadConfiguration" />
于 2010-12-29T11:38:39.990 回答