我有兩個不同的視圖模型的頁面:如何將數據綁定到子View模型?
<?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>
的問題是,一旦我定義第二視圖模型,所有的外部引用是不可訪問:我有第一個標籤的值,但我沒有列表框或第二個標籤的值。有沒有辦法做到這一點?我嘗試沒有成功做到這一點:
<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">
我能在第一個合併的第二視圖模型,但是這不會是很方便!我也接受其他解決方案,這讓我可以採用模塊化方法。
我ZK版本是6.0.1
查看http://books.zkoss.org/wiki/ZK_Component_Reference/Essential_Components/Include#Pass_Values_to_the_Included_Page_2傳遞參數非常靜態,並且僅將外觀放入requestScope中,以便在外部頁面的渲染階段進行。當用戶點擊標籤面板後,原始渲染中使用的參數不會被重新評估。將內部項目綁定到空的viewmodel。將全局命令放在tabbox上,選擇內部和外部視圖模型可以偵聽的內容,並通過desktopScope將選定日期傳遞給內部視圖模型? – simbo1905
這是指MVC,我使用MVVM。另外,我可以從include內部訪問參數,它是不能再訪問它的子視圖模型。 – Kjir
包含的內容與mvc,mvp或mvvm無關。關鍵是在事件被解僱時事情不會被重新評估。 – simbo1905