2 つの異なるビュー モデルを持つページがあります。
<?page title="My page" contentType="text/html;charset=UTF-8"?>
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.mycompany.FirstViewModel')">
<!-- A lot of unimportant stuff -->
<tabbox>
<tabs>
<tab label="Tab1" ></tab>
<!-- Other unimportant tabs -->
</tabs>
<tabpanels>
<tabpanel>
<include src="inc/other.zul" p="@ref(vm.selected)" pid="@ref(vm.selected.id)" ></include>
</tabpanel>
</tabpanels>
</tabbox>
</div>
インクルードは次のとおりです。
<window>
<label id="sid" value="@load(pid)" />
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vms') @init('com.mycompany.SecondViewModel')">
<listbox model="@id('vars') @load(p.someList)"
selectedItem="@bind(vms.selected)"
emptyMessage="No data in list">
<!-- Template and stuff -->
</listbox>
<label id="sid1" value="@load(pid)" />
</div>
</window>
問題は、2 番目のビューモデルを定義すると、すべての外部参照にアクセスできなくなることです。最初のラベルには値がありますが、リストボックスまたは 2 番目のラベルには値がありません。それを行う方法はありますか?私はこれを行うことに成功しませんでした:
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vms') @init('com.mycompany.SecondViewModel')" list="@ref(p.someList)">
<listbox model="@id('vars') @load(list)"
selectedItem="@bind(vms.selected)"
emptyMessage="No data in list">
2 番目のビュー モデルを最初のビュー モデルにマージすることはできますが、それはあまり便利ではありません。また、モジュール式のアプローチを可能にする他のソリューションにもオープンです。
ZK の私のバージョンは 6.0.1 です