나는 두 개의 서로 다른보기 모델이있는 페이지가 있습니다어떻게 데이터를 하위 모델에 바인딩합니까?
<?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>
문제는 내가 두 번째 뷰 모델을 정의하면, 모든 외부 참조가 액세스 할 수없는 것입니다 : I 첫 번째 레이블에 대한 값을 가지고 있지만 목록 상자 나 두 번째 레이블에 대한 값이 없습니다. 그렇게 할 수있는 방법이 있습니까?
<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 select에 전역 명령을 입력하고 desktopScope를 통해 선택한 날짜를 내부보기 모델에 전달할 수 있습니까? – simbo1905
이것은 MVC를 말하며 MVVM을 사용합니다. 또한 Include 내부에서 매개 변수에 액세스 할 수 있으므로 더 이상 액세스 할 수없는 하위 뷰 모델입니다. – Kjir
포함 내용은 mvc, mvp 또는 mvvm과 별개입니다. 요점은 이벤트가 시작될 때 다시 평가되지 않는다는 것입니다. – simbo1905