0

我将 Dojo 1.10 用于 SPA。在应用程序中,我有一个视图,dojox/app/view的实例,允许用户操作从模型加载的数据。该视图有一个返回按钮,允许用户转换到屏幕。

Back按钮的处理程序使用

        TransitionEvent({
            app: self.app,
            target: evt,
            transitionOptions: {
                history: true,
                params: {...},
                title: "ViewListView",
                target: "ViewListView",
                url: "#ViewListView"
            },
            triggerEvent: evt
        }).dispatch();

转换回屏幕。

此处的用例是,如果存在未保存的数据更改,则应在转换前警告用户。应向用户提供放弃更改并继续转换或取消转换并保持在同一视图上的选项,以便能够保存更改。

这可以在返回按钮的处理程序中实现,因为转换是手动触发的,如果用户选择在返回之前保存更改,则可以防止发生这种情况。问题是,当用户按下浏览器后退按钮时,转换发生在内部,无法检查是否有任何未保存的数据更改并停止转换发生。

我试过使用

beforeDeactivate(nextView, data) 在每次转换出视图时在视图被隐藏之前调用。

但找不到拦截过渡的方法。如何在发生应用检查之前拦截转换?是否可以在某个地方截取转换,以便捕获从浏览器后退按钮转换和从视图内手动触发的转换?

谢谢你的帮助。

4

1 回答 1

0

如果有未保存的数据,扩展历史控制器以支持检查以避免进行转换应该不难。

于 2015-06-08T13:15:03.903 回答