我的问题是:
我的模型中有2个实例:
<xf:instance id="Include-model">
<data>
<value type="xs:string">true</value>
</data>
</xf:instance>
这是连接到一个复选框, 和
<xf:instance id="items-model">
<items>
<item>1</item>
<item>2</item>
<item>3</item>
</xf:instance>
我将绑定声明为:
<xforms:bind id="items-bind" nodeset="items[instance('Include-model')/value = 'true']">
复选框正确更新Include模型,但绑定不会更新以反映此情况。基本上,如果选中复选框,我需要显示项目,否则隐藏它们。初始状态是正确的,但是当我选中/取消选中复选框时,更改不会反映在绑定中。
永远感谢所有能提供帮助的人。
答案 0 :(得分:0)
您可以尝试
<xforms:bind id="items-bind" nodeset="instance('items-model')" relevant="instance('Include-model')/value = 'true'" />
答案 1 :(得分:0)
首先,我可以看到您在此处提供的代码段中存在多个问题。
此处缺少结束标记。它应该看起来像
<xforms:instance id="items-model">
<items>
<item>1</item>
<item>2</item>
<item>3</item>
</items>
</xforms:instance>
提到的绑定中的节点集用于项目。它应该是项目。由于没有给出从表单生成器或“手写”代码中提取代码的信息,我不能说它是正确的。对于“手写”代码,您案例中的绑定定义将如下所示
<xforms:bind id="items-bind" nodeset="instance('items-model')/item[instance('Include-model')/value = 'true']" />
以下是您可以针对此案例运行的完整Xforms代码。尝试将值作为'true'运行,并再次将值作为'false'来理解bind是如何工作的。
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:xforms="http://www.w3.org/2002/xforms">
<xhtml:head>
<xhtml:title>Xforms</xhtml:title>
<xforms:model>
<xforms:instance id="Include-model">
<data>
<value type="xs:string">true</value>
</data>
</xforms:instance>
<xforms:instance id="items-model">
<items>
<item>1</item>
<item>2</item>
<item>3</item>
</items>
</xforms:instance>
<xforms:bind id="items-bind" nodeset="instance('items-model')/item[instance('Include-model')/value = 'true']" />
</xforms:model>
</xhtml:head>
<xhtml:body>
<table>
<tr>
<td>Bind items are
<xforms:output value="
string-join(xxforms:bind('items-bind'), ' -- ')
" />
</td>
</tr>
</table>
</xhtml:body>
</xhtml:html>