Events ZK:侦听所有子体的事件

Events ZK:侦听所有子体的事件,events,scala,forwarding,zk,event-flow,Events,Scala,Forwarding,Zk,Event Flow,我目前正在开发一个ZK应用程序,但找不到一种方法来侦听从一个特定组件(该特定组件是一开始唯一存在的组件)下面的所有组件触发的所有SelectEvents,然后获取其中发生的每个选择的子代或子代 此组件下面的层次结构将随每个SelectEvent而改变,每次发生这种情况时,我都需要检查条件 我能想到的只有 定义一个函数,该函数执行我需要的条件检查,另外 添加到所有没有调用此函数的事件侦听器的Decentant 在执行条件检查的页面上注册事件侦听器。开火的次数比必要的多,但总比根本不开火好。 两者都

我目前正在开发一个ZK应用程序,但找不到一种方法来侦听从一个特定组件(该特定组件是一开始唯一存在的组件)下面的所有组件触发的所有SelectEvents,然后获取其中发生的每个选择的子代或子代

此组件下面的层次结构将随每个SelectEvent而改变,每次发生这种情况时,我都需要检查条件

我能想到的只有

定义一个函数,该函数执行我需要的条件检查,另外 添加到所有没有调用此函数的事件侦听器的Decentant 在执行条件检查的页面上注册事件侦听器。开火的次数比必要的多,但总比根本不开火好。 两者都感觉不对,如果存在多个根组件,则后者就不安全,因为每个根组件都有自己的子组件集

有没有什么我忽略了的

PS:这是ZK版本的

一些代码。ExpressionTypeSelector包含用于选择ExpressionModel的列表框。在select上,模型的小部件替换ExpressionTypeSelector的小部件

主要内容:

ExpressionModel的TermModel示例


您可以看到:用户可以创建一个TermModels树。每次选择发生后,它都应该检查这是否是最后一个可能的选择。

我认为除了使用第二个选项之外,没有其他更容易的选择。为此,可以使用页面级事件侦听器。ZK文档中关于它的参考是

除了使用第二个选项之外,我看不到任何其他简单的方法。为此,可以使用页面级事件侦听器。ZK文档中对它的引用是

My代码在HtmlMacroComponent中,所以是1。我将不得不以编程方式检索页面。如何?二,。如果存在这些组件中的一个以上,它将不起作用。但我计划使它们成为模态,anywayTree组件支持onSelect事件,如果选择了任何treeitem,就会触发onSelect事件。那么,在事件处理程序中检查您的条件如何?在这种情况下,不需要向子体添加任何事件侦听器。这样我就可以从树组件继承支持我想要做的事情?也就是说,创建列表框作为节点,用select上的其他小部件替换它们自己?然后触发树的onSelect事件?我的代码在HtmlMacroComponent中,所以1。我将不得不以编程方式检索页面。如何?二,。如果存在这些组件中的一个以上,它将不起作用。但我计划使它们成为模态,anywayTree组件支持onSelect事件,如果选择了任何treeitem,就会触发onSelect事件。那么,在事件处理程序中检查您的条件如何?在这种情况下,不需要向子体添加任何事件侦听器。这样我就可以从树组件继承支持我想要做的事情?也就是说,创建列表框作为节点,用select上的其他小部件替换它们自己?然后启动树的onSelect事件?
expressionSelector = new ExpressionTypeSelector()
expressionSelector.widget.setParent(layout)
class TermModel extends ExpressionModel[BooleanTerm] {
    val b1 = new ExpressionTypeSelector
    val op = new OperatorSelector
    val b2 = new ExpressionTypeSelector

    var widget = new Hlayout
    for (w ← List(
        new Label("("),
        b1.widget,
        op.widget,
        b2.widget,
        new Label(")")
    )) w.setParent(widget)
}