Краткие сведения: Я использую Flex 3.5.Flex отменяет событие изменения на дереве
У меня есть компонент дерева, который используется в качестве меню навигации между разными страницами. Когда пользователь нажимает на определенную опцию в меню, я переключаю «страницу», переключая между компонентами состояния в своем приложении. Дело в том, что когда пользователь действительно нажимает на опцию в меню, я хочу выполнить проверку некоторой информации в определенном компоненте. Если проверка не удалась, я показываю предупреждение, и я хотел бы предотвратить навигацию на другой странице. Одна часть этого просто не меняет currentState документа, но компонент дерева по-прежнему продолжается с событием изменения, и результатом является страница A, которая все еще отображается на экране, тогда как выбранная опция в дереве - страница B (к которому пользователь хотел перейти, но не удалось, поскольку некоторая информация недействительна).
Я попытался выяснить, как я могу отменить событие изменения на самом древовидном компоненте. Понятия, которые у меня были, не совсем соответствовали:
Я искал несколько другое событие (например, «change» или «startChange»), на котором я могу вызвать метод stopPropagation() (поскольку регулярное изменение 'событие не отменяется), но для компонента Дерево не существует.
Я также думал о том, что всегда сохраняю текущую опцию, выбранную в компоненте Tree, и когда проверка не выполняется, я установлю выбранный элемент Tree на эту сохраненную опцию. Это также уродливо, потому что такое действие поднимет еще одно событие изменения на дереве, таким образом, изменится состояние компонентов Штатов и другое население страницы, на которой я уже нахожусь. Это то, чего я действительно не хочу делать.
Я также об использовании другого компонента, например меню (и я также нашел реализацию вертикального меню), но это даже не помогает. Там же будет существовать такая же проблема.
Есть ли правильный способ сделать это? Должна быть лучшая практика для предотвращения совершения процесса изменения!