2016-03-01 32 views
0

我有一個<div>元素,我想基於xforms實例值使用。如何在html元素中使用xforms中的'if'屬性?

喜歡的東西:

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

這是「如果」,我們檢查僅適用於<xf:action>,<xf:submission> etc實例屬性的值。元素,而不是與常規的HTML元素?還是有我失蹤的方法?

回答

2

對於有條件的HTML元素,XForms允許使用ref屬性定義xf​​:group元素。模擬「if」的訣竅是使用謂詞,如「。[instance('scope')='user']」:通過這種方式,上下文節點保持不變,但xf:組內容將在謂詞中的條件爲false時被禁用。

+0

這就是我正在尋找的!謝謝 !! – Crusaderpyro

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'的值將顯示第二個觸發器。

稍微比你的僞代碼冗長但工作。

相關問題