1

我有一个<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 元素?或者有什么我想念的方法吗?

4

2 回答 2

3

对于条件 HTML 元素,XForms 允许使用 ref 属性定义 xf:group 元素。

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

于 2016-03-01T07:14:17.187 回答
1

'if' 属性仅对 XForms 操作元素(XForms 1.1)有效。然而,正如 Alain 所指出的,您可以使用“ref”属性(为所有 XForms 控件定义)并使用相关性来实现您想要的(元素的条件显示)。绑定表达式必须评估为布尔值“真”或“假”,这反过来使控件可见或不可见(相关)。

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

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

'fooValue' 的值将显示第一个触发器。'barValue' 的值将显示第二个触发器。

比您的伪代码更冗长但有效。

于 2016-03-01T21:42:02.870 回答