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

i.a*_*iel 1 apache-flex navigation events

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

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

退出屏幕有多种方法:

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

我是否必须抓住所有这些事件并插入所有这些地方?有什么样的焦点机制吗?

Kak*_*Bok 6

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

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

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

  • CHANGE_LIST_ITEM(新项目)
  • CHANGE_TAB(新标签)
  • CHANGE_SCREEN(新画面)

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

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

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

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