使用实例的值作为调度名称

Using an instance's value for a dispatch name

我有以下事件处理程序和实例:

<xforms:action ev:event="test-event">
    <!-- do some stuff in here -->
</xforms:action>

<xforms:instance id="metadata">
    <dummy />
</xforms:instance>

后来,我有:

<xforms:setvalue ref="instance('metadata')" value="'test-event'" />
<xforms:dispatch name="instance('metadata')" target="somethingElse" />

如何根据元数据实例中的值进行调度以触发具有名称的事件? (在这种情况下,触发 test-event 事件?)

您可以在 name 属性中使用 AVT。也就是说,如果值在大括号之间,它将被计算为 XPath 表达式,而不是按字面意思。例如,您可以这样写:

<xf:trigger id="my-trigger">
    <xf:label>Click me!</xf:label>
    <xf:message ev:event="my-event" value="'Got it!'"/>
    <xf:dispatch ev:event="DOMActivate" name="{concat('my', '-', 'event')}" target="my-trigger"/>
</xf:trigger>