如何在 zk 中找到给定组件的根组件?
How do I find the root component of a given component in zk?
在我的视图模型中,我有以下代码:
@Command
public void onFinish(@BindingParam(value = "myButton") Button myButton) {
Component root = myButton.getParent().getParent().getParent();
...
}
是否有更优雅的方法来查找任何给定组件的根组件?每次更改 zul 时都必须更改上面的表达式。
P.S。我是 zkoss 的新手..:)
假设您的根组件有一个 id,您可以执行以下操作:
Component root = myButton.getPage().getFellow("id-of-root-component");
这完全取决于您的组件的根。
您的根通常是 IdSpace
,如果您没有设置其他 IdSpace 元素,您可以使用:
@Command
public void onFinish(@ContextParam(ContextType.SPACE_OWNER) IdSpace spaceOwner) {
...
}
这样,您就不必在 zul 中传递任何内容。
它会自动获取该组件。
请记住,IdSpace
是在某些特定组件中实现的接口。
Please take a look of the other,也许更适合你的情况,你可以做的选择。
但是有also other tricks,这个用了CSS个选择器:
@Command
public void onFinish(@SelectorParam(":root") Component root) {
...
}
这样你就永远拥有根
我不太喜欢使用绑定参数将组件从视图发送到视图模型。
原因是今天,你从一个按钮调用这个命令,但也许你在其他组件上添加了相同的命令,然后这将失败。
是的,您可以使用 Component
class,但是 MVVM 有很多方法可以更好地做到这一点而不会污染您的视图。
请记住,MVVM 的重点是 UI 和代码之间的分离。
触发命令的内容可能无关紧要,即使 collection 将在屏幕上填充什么也无关紧要。
在我的视图模型中,我有以下代码:
@Command
public void onFinish(@BindingParam(value = "myButton") Button myButton) {
Component root = myButton.getParent().getParent().getParent();
...
}
是否有更优雅的方法来查找任何给定组件的根组件?每次更改 zul 时都必须更改上面的表达式。
P.S。我是 zkoss 的新手..:)
假设您的根组件有一个 id,您可以执行以下操作:
Component root = myButton.getPage().getFellow("id-of-root-component");
这完全取决于您的组件的根。
您的根通常是 IdSpace
,如果您没有设置其他 IdSpace 元素,您可以使用:
@Command
public void onFinish(@ContextParam(ContextType.SPACE_OWNER) IdSpace spaceOwner) {
...
}
这样,您就不必在 zul 中传递任何内容。
它会自动获取该组件。
请记住,IdSpace
是在某些特定组件中实现的接口。
Please take a look of the other,也许更适合你的情况,你可以做的选择。
但是有also other tricks,这个用了CSS个选择器:
@Command
public void onFinish(@SelectorParam(":root") Component root) {
...
}
这样你就永远拥有根
我不太喜欢使用绑定参数将组件从视图发送到视图模型。
原因是今天,你从一个按钮调用这个命令,但也许你在其他组件上添加了相同的命令,然后这将失败。
是的,您可以使用 Component
class,但是 MVVM 有很多方法可以更好地做到这一点而不会污染您的视图。
请记住,MVVM 的重点是 UI 和代码之间的分离。
触发命令的内容可能无关紧要,即使 collection 将在屏幕上填充什么也无关紧要。