我想做的是通过page1.zul
和page2.zul
将值从<include>
传递到viewModel
。
从page1.zul
,我有
<include processId="@bind(vm.selectedProcess.id)" src="@load('page2.zul')"></include>
然后它应该传递给
viewModel
中的page2.zul
@Init
public void init(@ExecutionArgParam("processId") String processId){
System.out.println("processInstanceId : " + processId);
}
但是,我总是得到一个空值。知道如何做这件事吗?
page2.zul
看起来像这样:<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @bind('com.mrye.viewModel')">
<label value="@load(vm.processId)"></label>
</div>
最佳答案
首先,为虚拟机的ID区分名称。
然后zul:
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.mrye.viewModel', processId = parentVM.selectedProcess.id )">
和VM2:
@Init
public void init (@BindingParam("processId") MyObject processID) {
在评论后编辑:
如您在this fiddle中所见,它可以工作,但是必须初始化您的参数。
如果要将“实时数据”传递给其他zul(而不是其他viewmodel),则可以使用
@ref
或仅使用parentVM。如果实时数据需要包含在viewmodel本身中,则可以使用不可见的文本框,在该文本框中,您可以从parentVM加载数据,然后在执行某些操作之前将其保存在includeVM中。
在此处查看updated fiddle。
关于mvvm - ZK MVVM : Passing parameter to another viewmodel using <include>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241415/