首页 > 解决方案 > 如何多次将事件从组件发送到其父级?

问题描述

我正在建立我之前发布的问题

我有一个带有一些复选框的 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 组件因此可以显示多次。第一次,onSelectionChange 事件被 vbox 组件正确触发和捕获。因此,正确调用了 onChange。但是,第二次加载组件时,复选框会触发该事件,但不会被 vbox 捕获。

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

谢谢你的帮助!

标签: javazk

解决方案


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

也许这有助于作为您场景的模板。如果不是,您可以调整并保存它以显示您的问题。所以我可以再看看。


推荐阅读