ЗК: Слушай все события потомков

В настоящее время я разрабатываю приложение ZK, но не могу найти способ прослушать все SelectEvents запускается из всех компонентов ниже одного конкретного (который является единственным, существующим в начале, а затем получает потомков с каждым происходящим в нем выбором или потомка).

Иерархия под этим компонентом будет меняться с каждым SelectEventи мне нужно проверять условия каждый раз, когда это происходит.

Единственное, о чем я могу думать, это

    1. определить функцию, которая делает проверку состояния мне нужно и дополнительно
    2. добавляет ко всем потомкам (у которых их нет) прослушиватели событий, которые вызывают эту функцию
  1. зарегистрируйте прослушиватель событий на странице, которая выполняет проверку состояния. стреляет чаще, чем необходимо, но лучше, чем вообще нет.

оба не чувствуют себя хорошо, и последний не является безопасным, если есть несколько корневых компонентов (так как каждый из них имеет свой собственный набор потомков)

Есть ли какой-то способ, который я упустил?

PS: это ZK-версия этого вопроса.


Какой-то код ExpressionTypeSelector содержит Listbox выбрать ExpressionModel, При выборе виджет модели заменяет ExpressionTypeSelectorвиджет.

главный:

expressionSelector = new ExpressionTypeSelector()
expressionSelector.widget.setParent(layout)

TermModel (пример для ExpressionModel)

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)
}

Вы видите: пользователь может создать дерево TermModels. После каждого выбора следует проверить, был ли это последний возможный выбор.

1 ответ

Я не вижу другого простого способа сделать это, кроме как использовать второй вариант. Для этого можно использовать прослушиватель событий уровня страницы. Ссылка на документацию по ЗК здесь

Другие вопросы по тегам