0

我的问题是这样的:

我的模型中有 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']">

该复选框正确更新了包含模型,但绑定不会更新以反映这一点。基本上,如果选中该复选框,我需要显示这些项目,否则隐藏它们。初始状态是正确的,但是当我选中/取消选中复选框时,更改不会反映在绑定中。

永远感谢所有可以提供帮助的人。

4

2 回答 2

0

首先,我可以看到您在此处提供的代码片段中存在多个问题。

  1. 此处缺少结束标记。它应该看起来像

        <xforms:instance id="items-model">
            <items>
                <item>1</item>
                <item>2</item>
                <item>3</item>
            </items>
        </xforms:instance>
    
  2. 提到的绑定中的节点集用于项目。应该是物品。由于没有给出从表单生成器中提取的代码还是“手写”代码的信息,我不能说它是否正确。对于“手写”代码,您的情况下的绑定定义将如下所示

        <xforms:bind id="items-bind" nodeset="instance('items-model')/item[instance('Include-model')/value = 'true']" />
    

下面是您可以针对这种情况运行的完整 Xforms 代码。尝试将 value 设置为 'true' 并再次将 value 设置为 '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>
于 2012-09-28T06:12:23.840 回答
0

你可以试试

<xforms:bind id="items-bind" nodeset="instance('items-model')" relevant="instance('Include-model')/value = 'true'" />
于 2012-09-28T06:05:47.070 回答