我想使用通过MVVM呈现的ZK树的onSelect事件
这里是zul文件供参考我想使用通过MVVM呈现的ZK树的onSelect事件,mvvm,tree,zk,zul,Mvvm,Tree,Zk,Zul,这里是zul文件供参考 <?page title="MVVM Tree POC"?> <zk> <borderlayout height="800px"> <west size="25%"></west> <center> <window apply="org.zkoss.bind.BindComposer" viewMod
<?page title="MVVM Tree POC"?>
<zk>
<borderlayout height="800px">
<west size="25%"></west>
<center>
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.nagarro.viewmodel.TreeViewModel')"
title="Dynamic Tree" border="normal">
<tree checkmark="true" model="@bind(vm.treeModel)"
onSelect="@command('select')" >
<template name="model" var="node" status="s">
<treeitem checkable="@load(node.checkable)"
open="true">
<treerow style="text-align:center;">
<treecell
label="@bind(node.data.firstName)" style="text-align:left;">
</treecell>
</treerow>
</treeitem>
</template>
</tree>
</window>
</center>
</borderlayout>
</zk>
树标记中有一个“onSelect”事件,并且只有一些树项有复选框现在,当选中复选框时,我想为相应的树行创建某些组件,如combobox。我正试图使用树的onSelect事件来创建这些组件,但问题是我需要传递所选复选框的引用,因为onSelect事件不在模板的范围内,所以我无法传递该引用通过它可以渲染树元素。
有没有别的办法来做我想做的事
这是我通过上面的zul文件得到的
我想知道选中了哪个复选框?这是我经常遇到的问题。我的解决方案一直是将数据附加到组件本身;在复选框中保留数据库实体的id或对象本身,以便在事件期间检索
checkbox.setAttribute("myAttributeName", myAttributeValue);
这需要一个cast来检索,这很不幸,但是通过一些最佳实践,您可以自信地进行检索。您可以在每个事件上传递任何参数,就像这样(从ZK文档): 在您的情况下,我会将onSelect事件从树组件移动到树元素,如下所示:
<tree checkmark="true" model="@bind(vm.treeModel)">
<template name="model" var="node" status="s">
<treeitem checkable="@load(node.checkable)"
open="true" onSelect="@command('select', nameParameter=node.data.firstName">
<treerow style="text-align:center;">
<treecell
label="@bind(node.data.firstName)" style="text-align:left;">
</treecell>
</treerow>
</treeitem>
</template>
</tree>
有关更多信息,请参见我已通过将onSelect事件添加到
treeRow
组件完成此操作。无论如何,谢谢你。
@Command
public void delete(@BindingParam("item") Item item ) {
//do some stuff based on what item you've picked
}
<tree checkmark="true" model="@bind(vm.treeModel)">
<template name="model" var="node" status="s">
<treeitem checkable="@load(node.checkable)"
open="true" onSelect="@command('select', nameParameter=node.data.firstName">
<treerow style="text-align:center;">
<treecell
label="@bind(node.data.firstName)" style="text-align:left;">
</treecell>
</treerow>
</treeitem>
</template>
</tree>
@Command
public void select(@BindingParam("nameParameter") String nameParameter ) {
System.out.println(nameParameter + " selected");
}