【发布时间】:2015-06-24 19:54:06
【问题描述】:
我需要根据给定条件(例如带有“是”、“否”和“取消”选项的弹出框)允许或阻止事件发生。
我需要通知用户说有未保存的数据,如果用户希望保存它,忽略它或取消他当前的操作(事件,如选择更改或单击)。
我尝试使用 createInterceptor() 函数。但无法实现功能。 有人可以举个例子给我一些建议吗?基本上我想知道如何停止一个事件。
谢谢..
已编辑
我喜欢使用 beforeXXX 事件的想法。但我仍然面临问题。正如我所提到的,我需要询问用户是否希望保存未保存的数据,这是一个异步运行的弹出消息框(带有选项 YES、NO 和 CANCEL)。所以当我得到回复时,事件已经发生了。
例如。让我们想象一种情况,有一个页面在网格中显示记录列表,底部附有一个分页工具栏(页面大小为 10,总页数为 10。所以总共 100 条记录)左手边。如果您在列表中选择一条记录,详细信息将显示在右侧的详细信息视图中。
现在,
我选择列表中的第三条记录,并在详细视图(表单)中对其进行一些更改。
不保存记录,我点击分页工具栏上的下一页按钮。
它会在分页工具栏的 beforeXXX 事件中显示一个确认框,但无论如何该事件都会发生。
如果用户点击取消,我将不得不恢复之前已经消失的状态。不知何故,我将不得不返回并选择上一页列表中的第三条记录。
所以为了解决这个问题,如果我的 beforeXXX 事件返回 false ,就不会触发下一个 XXX 事件。
但是,如果用户单击“是”或“否”选项,我将不得不手动触发事件 XXX,目前我无法针对选择更改事件执行此操作。
像这样可以有许多操作,如列表过滤、搜索、排序(A-Z/ Z-A)、注销等。对于每个操作,我都必须编写自定义代码,这完全破坏了代码的可读性。
所以我在想是否有办法通过将事件对象保存在 beforeXXX 中以某种方式手动触发事件 XXX...或者有没有其他方法可以恢复以前的状态。
请给我建议....谢谢...
【问题讨论】:
标签: extjs extjs4.2 sencha-architect