如何将事件从组件多次发送到其父组件?

时间:2019-10-29 14:30:36

标签: java zk

我以之前发布的问题here为基础:

我有一个vbox,其中包含一些复选框,这些复选框由整个窗口的viewmodel动态添加。视图模型将侦听器注册到复选框的onCheck事件,如下所示:

if (childName.equals("org.zkoss.zul.Checkbox")) {
    child.addEventListener(1000,"onCheck", new EventListener<Event>() {
        @Override
        public void onEvent(Event event) throws Exception {
            Events.postEvent(1000,"onSelectionChange",parent,null);                     
        }                       
    });
}

onSelectionChange事件在父vbox中被捕获,如下所示:

<vbox onSelectionChange="@command('onChange', component=self, finishButton=finish)"/>

整个vbox组件是向导的一部分,该向导允许在其页面之间来回移动。因此,vbox组件可以显示多次。第一次,onboxionChange事件被vbox组件正确触发并捕获。因此,onChange被正确调用。但是,第二次加载组件时,该事件由复选框触发,但未被vbox捕获。

我已经尝试了postEvent和sendEvent。在任何情况下,该事件均不会正确转发到父vbox。有谁知道为什么会这样?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我准备了一个可运行的示例(基于我从您的描述中了解的内容),该示例可以工作... http://zkfiddle.org/sample/51j1be/1-wizard-checkboxes-custom-events

也许可以作为您方案的模板。如果没有,您可以调整并保存以显示您的问题。所以我可以再看一遍。