<zk>
<grid width="auto" sizedByContent="true" span="1" sclass="tblWithoutHover">
<attribute name="onCreate">
authorPublisherEtcInclude.insertBefore(self, authorBox);
</attribute>
<columns>
<column/>
<column/>
</columns>
<rows>
<row valign="center">
<cell colspan="2"><label use="${authorPublisherComponents.originalFieldsLabel}"/></cell>
</row>
<row valign="center">
<label use="${authorPublisherComponents.titleAuthorOriginalLabel}"/>
<textbox use="${authorPublisherComponents.titleAuthorOriginalTextbox}"/>
</row>
<row valign="center">
<label use="${authorPublisherComponents.mainAuthorOriginalLabel}"/>
<textbox use="${authorPublisherComponents.mainAuthorOriginalTextbox}"/>
</row>
<row valign="center">
<label use="${authorPublisherComponents.mainAuthorResponsibilityLabel}"/>
<selectbox use="${authorPublisherComponents.mainAuthorResponsibilitySelectbox}"/>
</row>
<row valign="center">
<label use="${authorPublisherComponents.authorityDatesOriginalLabel}"/>
<textbox use="${authorPublisherComponents.authorityDatesOriginalTextbox}"/>
</row>
<row valign="center">
<cell>
<label use="${authorPublisherComponents.addMainAuthorsOriginalLabel}"/>
<toolbarbutton use="${authorPublisherComponents.addAuthorButton}"/>
</cell>
<cell id="addAuthorsCell">
<grid id="addAuthorsContainer" model="@bind(ivm.inventory.addAuthorsBeans)">
<columns>
<column/>
<column/>
<column/>
</columns>
<rows>
<row>
<textbox value="@load(xgbfxb.authorName)" onChange="@command('test', component = self, index=s.index)"/>
<button label="Del" onClick="@command('delAuthor', container=addAuthorsContainer, index=modelIndex )">
<custom-attributes modelIndex="${s.index}"/>
</button>
</row>
</rows>
</grid>
<textbox use="${authorPublisherComponents.addMainAuthorsOriginalTextbox}"/>
</cell>
</row>
これは私の zul ページの一部です。addAuthorsBeans は、フィールドを持つクラスのリストです。コンボボックスのデータを変更すると、アプリケーションはリスト内のすべてのクラスに対して set メソッドを呼び出しますが、対応するアイテムに対してのみ呼び出すようにします。出来ますか?それとも、onChange イベントと ViewModel メソッドで黒魔術を唱えるべきですか?
編集 (2013 年 12 月 21 日)。これは次のように機能します: 1、2、3 の 3 つのアイテムを取得しました。次に、2 つのアイテムに対して setAuthor をアクティブにします。次に、アプリケーションは setAuthor メソッドを 2 つのアイテムに対して呼び出し、次に 3 つのアイテムに対して呼び出し、次に 1 つのアイテムに対して呼び出し、コンテナー内でこのメソッドを探します。
静的変数を作成し、setAuthor メソッドの最初の呼び出しでそれを変更し、コンテナでブロックを解除する「黒魔術」の一時的な解決策があります。
しかし、これは最終的な解決策ではありません。なぜなら、それはより多くのリソースを消費し、実際にどのように機能するべきではないからです。
解決策:別のグリッドにモデルを持つグリッドがある場合、非常に奇妙な動作をします。したがって、代わりにリストボックスを使用してください。