如何在带有 html 元素的 xforms 中使用 'if' 属性?



我有一个<div>元素,我想根据 xforms 实例值使用它。

像这样:

    <xf:trigger appearance="minimal"  >
                <xf:label >
                  ..
                 <div  if="instance('scope')= 'user'">   <!-- I know this doesn't work -->
                 </div>
                  ..
                </xf:label>
                    ....      
     </xf:trigger>   

这个"if"属性是否只适用于 <xf:action>,<xf:submission> etc . 元素而不是常规 html 元素?还是有没有办法我错过了?

对于条件HTML元素,XForms允许定义一个带有ref属性的xf:group元素。

模拟"if"的诀窍是使用谓词,如".[instance('scope') = 'user']":这样,上下文节点保持不变,但如果谓词中的条件为 false,则 xf:group 内容将被禁用。

'if' 属性仅在 XForms 动作元素 (XForms 1.1) 上有效。但是,正如 Alain 指出的那样,您可以使用"ref"属性(为所有 XForms 控件定义)并使用相关性来实现您想要的(元素的条件显示)。绑定表达式的计算结果必须为布尔值"true"或"false",这反过来又使控件可见或不可见(相关)。

此外,触发元素也可以与"ref"绑定。因此,对于您的示例,您可以有:

<xf:trigger ref="someXPath[. eq 'fooValue']">...</xf:trigger>
...
<xf:trigger ref="someXPath[. eq 'barValue']">...</xf:trigger>

然后,值"fooValue"将显示第一个触发器。值"barValue"将显示第二个触发器。

比你的伪代码更冗长一些,但可以工作。

最新更新