【发布时间】:2010-06-30 06:12:35
【问题描述】:
简要说明:我使用的是 Flex 3.5。
我有一个 Tree 组件,用作不同“页面”之间的导航菜单。 当用户单击菜单中的某个选项时,我通过在应用程序中的状态组件之间切换来切换“页面”。 问题是,当用户确实单击菜单中的选项时,我想对某个组件中的某些信息进行验证。如果验证失败,我会显示警报,并且我想阻止导航到其他页面。其中一部分是根本不改变文档的 currentState,但是树组件仍然会发生更改事件,结果是页面 A 仍然显示在屏幕上,而树中的选定选项是页面 B (用户想要导航到的位置,但由于某些信息无效而失败)。
我试图弄清楚如何取消树组件本身的更改事件。 我的想法不太适合:
我搜索了一个稍微不同的事件(例如“更改”或“开始更改”),我可以在该事件上调用 stopPropagation() 方法(因为常规的“更改”事件不可取消),但树不存在组件。
我还考虑过总是自己保存在 Tree 组件中选择的当前选项,当验证失败时,我会将 Tree 的 selectedItem 设置为该保存的选项。这也很丑陋,因为这样的操作会在树上引发另一个更改事件,从而对状态组件进行另一个更改,以及我已经在其中的页面的另一个填充。那是我真的不想做的事情。
我也考虑过使用不同的组件,例如菜单(我还找到了垂直菜单的实现),但这似乎没有帮助。那里也会存在同样的问题。
有没有合适的方法来做到这一点? 必须有防止更改过程提交的最佳实践!
【问题讨论】:
标签: apache-flex events tree