Dojo MVC:如何在数据错误时取消视图转换

Dojo MVC: How to cancel View Transition on Data Error

本文关键字:错误 取消 视图 转换 数据 MVC Dojo      更新时间:2023-09-26

我使用Dojo 1.10进行SPA。在应用程序中,我有一个dojox/app/view的视图实例,它允许用户操作从模型加载的数据。视图有一个Back按钮,允许用户切换到Home屏幕。

返回按钮的处理程序使用
        TransitionEvent({
            app: self.app,
            target: evt,
            transitionOptions: {
                history: true,
                params: {...},
                title: "ViewListView",
                target: "ViewListView",
                url: "#ViewListView"
            },
            triggerEvent: evt
        }).dispatch();

切换回屏幕。

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

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

我试过使用:

beforeDeactivate(nextView, data)在视图被隐藏之前被调用。

但无法找到拦截转换的方法。如何在应用检查之前拦截转换?是否有可能在一个地方拦截转换,以便它同时捕获从浏览器返回按钮的转换和从视图内手动触发的转换?

谢谢你的帮助。

扩展History控制器以支持检查,以避免在存在未保存的数据时进行转换,这应该不难。