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

あなたは試すかもしれません

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

まず、ここで提供されたコード スニペットに複数の問題があることがわかりました。

  1. ここには終了タグがありません。次のように見えるはずです

        <xforms:instance id="items-model">
            <items>
                <item>1</item>
                <item>2</item>
                <item>3</item>
            </items>
        </xforms:instance>
    
  2. 上記のバインドのノードセットはアイテム用です。アイテムのはずです。form-b​​uilder から取得したコードか「手書き」のコードかについての情報がないため、正しいかどうかはわかりません。「手書き」コードの場合、バインド定義は次のようになります

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

以下は、この場合に実行できる完全な Xforms コードです。値を「true」にして実行し、再度値を「false」にして実行して、バインドがどのように機能するかを理解してください。

<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 に答える