mvvm - ZK MVVM : Passing parameter to another viewmodel using <include>

标签 mvvm zk

我想做的是通过page1.zulpage2.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/

相关文章:

java - 如何在页面zk框架中触发任何选定的手动事件时保存文本框值

c# - 如何将文本框的borderBrush属性绑定(bind)到viewmodel中的属性,类型转换错误

c# - 直接绑定(bind) DataGrid 列

wpf - 源更改时组合框 SelectedItem 不更新

java - 使用 ZK 在选项卡中加载页面

css - zk 在行网格中使用 sclass

javascript - Knockout.js - 如何更改 View 模型

c# - 使用 Mvvm、Wpf、C#、Visual Studio 在 TextBox 文本更改上关闭 Windows

java - ZK 框架在源代码中显示

java - 安装 JPA 时将 zk Essential 第 10 章导入 Eclipse 失败