我想根据xforms实例值使用<div>
元素。
类似的东西:
<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元素?还是有一种方法我错过了?
答案 0 :(得分:2)
对于条件HTML元素,XForms允许使用ref属性定义xf:group元素。
模拟“if”的技巧是使用谓词,如“。[instance('scope')='user']”:这样,上下文节点保持不变,但xf:group内容将如果谓词中的条件为false,则禁用。
答案 1 :(得分:1)
'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'将显示第二个触发器。
比你的伪代码更冗长,但有效。