如果继续而不保存在Flex中,则显示警报?

时间:2011-08-03 14:09:36

标签: flex events navigation

功能分析: 在我的应用程序的一个组件上,我有一个编辑/锁定系统。当用户开始编辑时,他会锁定文件,以便其他用户无法编辑它。

问题场景:当用户激活“编辑模式”并离开屏幕时,我想显示一个包含两个选项的警报:保存更改或放弃更改。

退出屏幕有多种方法:

  • 左侧有一个列表,其中包含其他可能的editabel数据。单击会更改组件中的数据。
  • 顶部有一个菜单栏通向其他屏幕。
  • 版本组件嵌入在Tab导航器中。更改选项卡时,必须显示警报。
  • 关闭浏览器。

我是否必须抓住所有这些事件并插入所有这些地方? 是否有任何焦点机制主义?

1 个答案:

答案 0 :(得分:6)

第一个问题的答案是:是。

您需要观看可能损害当前编辑数据的所有可能的退出事件。

嗯,现在的问题是如何妥善管理。使用MVC框架,您将触发组件中的相应命令:

  • CHANGE_LIST_ITEM(新项目)
  • CHANGE_TAB(新标签页)
  • CHANGE_SCREEN(新屏幕)

然后,每个命令检查当前编辑的选项卡是否已保存。如果没有,则显示警报。否则,如果没有变化,它允许列表,屏幕选择器和标签栏继续。

因此,您的组件(列表,屏幕,选项卡)需要实现某种回滚或preventDefault机制。通常,中央验证器必须允许更改其状态(在MVC命令中)。

对于列表:我建议不能通过鼠标单击选择列表,而只能通过编程方式选择。您在列表项单击事件上设置侦听器。如果该命令允许设置新项目,它将通知列表。在MVC中通常通过发送由列表的中介接收的异步消息。 [[甚至更正确:该命令会设置一些模型属性(例如currentListItem)和模型而不是发送异步消息。]]

编辑:对于浏览器关闭事件,您需要调用JavaScript专家。