1

クラスの属性をデータセットにデータバインドしたいクラスを開発しています。私はクラスの次の簡略化されたバージョンで次のものを動作させることができました:

  <class name="myclass">

    <dataset name="attSettings"><settings>
        <property name="applyshadow" defaultvalue="false" type="boolean" />
    </settings></dataset>

    <attribute name="default_applyshadow" type="boolean" value="$once{(this.attSettings.getPointer()).xpathQuery('settings/property[@name=&quot;applyshadow&quot;]/@defaultvalue')}" />

  </class>

ただし、この構文は非常に面倒で正しく感じられないため、これを行うためのより良い方法があるかどうか疑問に思っています。

4

2 に答える 2

1

これはあなたの質問に答えませんが、あなたの状況でローカルデータセットを使用できない理由を説明します。クラスにローカルデータセットがある場合、データセットはクラスの子でのみアドレス指定できます。例:

<canvas debug="true">

    <class name="myclass">
        <dataset name="myds">
            <root>
                <property name="applyshadow" defaultvalue="false" type="boolean" />
            </root>
        </dataset>

        <text datapath="local:classroot.myds:/root/property[@name='applyshadow']/@defaultvalue" />

    </class>

    <myclass />

</canvas>

<text>要素は、データパス値の前に追加することで、親クラスのデータセットにアクセスできますlocal:。データセットの名前を選択しない場合、OpenLaszloはデータセットの名前を自動的に使用しますlocaldata。その名前を使用するデータセットは、datapath/xpath値のデータセット名を省略することでアドレス指定できます。

    <class name="myclass">
        <dataset>
            <root>
                <property name="applyshadow" defaultvalue="false" type="boolean" />
            </root>
        </dataset>

        <text datapath="local:classroot:/root/property[@name='applyshadow']/@defaultvalue" />

    </class>

<text>データパスには名前がなく、コンポーネントに使用されるデータパスはになりましたが、同様に機能することに注意してlocal:classroot:/root/...くださいlocal:classroot.localdata:/root/...

ローカルデータセットを含むクラスのデータパスでローカルデータセットを使用できないようにする設計上の決定はわかりませんが、技術的な理由(初期化の順序など)があった可能性があります。

于 2013-01-23T12:27:36.130 に答える
0

私は自分がやりたいことをするための適切な構文を見つけました:

 <dataset name="myclass_settings">
   <root>
     <property name="applyshadow" defaultvalue="false" type="boolean" />
   </root>
 </dataset>

 <class name="myclass" datapath="myclass_settings:/root">
    <attribute name="default_applyshadow" type="boolean" value=$path{'property[@name=&quot;applyshadow&quot;]/@defaultvalue'}" />
 </class>

$ path {}制約は、相対xpathクエリを介して値をデータセットにリンクするためにクラス属性で使用されます。また、データセットを機能させるには、データセットをクラスの外に移動する必要がありました。

于 2013-01-23T00:02:34.577 に答える