我有一个<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"将显示第二个触发器。
比你的伪代码更冗长一些,但可以工作。