Sapui5 阻止路由器导航

Sapui5 阻止路由器导航,sapui5,Sapui5,我需要防止路由器被导航到另一个页面,这是通过更改哈希来完成的,如果做了一些更改。尝试使用HashChanger,但它只是触发“hashChange”事件,无法防止冒泡。答案可以在JS信号库中找到,但用户创建的SAP组件无法直接找到答案。路由器上有停止功能 如果您调用它,路由器将停止侦听哈希更改 还有一个功能。 要重新激活路由器,请调用initialize…路由器上有一个停止功能 如果您调用它,路由器将停止侦听哈希更改 还有一个功能。 要重新激活路由器,请调用initialize…而不是完全停止路

我需要防止路由器被导航到另一个页面,这是通过更改哈希来完成的,如果做了一些更改。尝试使用HashChanger,但它只是触发“hashChange”事件,无法防止冒泡。答案可以在JS信号库中找到,但用户创建的SAP组件无法直接找到答案。

路由器上有停止功能

如果您调用它,路由器将停止侦听哈希更改

还有一个功能。
要重新激活路由器,请调用initialize…

路由器上有一个停止功能

如果您调用它,路由器将停止侦听哈希更改

还有一个功能。
要重新激活路由器,请调用initialize…

而不是完全停止路由器,可以通过事件处理程序中的event.preventDefault阻止导航


[1] :如果阻止导航的原因是缺乏授权,则仅在客户端阻止用户是不够的。服务器首先需要确保没有未经授权的资源发送到客户端。请参阅GitHub上的。

事件处理程序中的event.preventDefault可以阻止导航,而不是完全停止路由器


[1] :如果阻止导航的原因是缺乏授权,则仅在客户端阻止用户是不够的。服务器首先需要确保没有未经授权的资源发送到客户端。查看GitHub上的链接。

是的,这肯定会起作用。我是通过扩展Router.parse方法实现这种行为的,但将切换到这种更符合逻辑的方法。不幸的是,停止控制器的方法并不像我预期的那样工作。当我监听“hashChanged”事件时,路由器也在监听这个事件。在这种情况下,我需要在将事件侦听器附加到“hashChange”事件之前停止路由器,这非常不舒服,否则路由器将始终在处理程序之前处理“hashChange”。可能还有比赛条件。是的,这肯定会奏效。我是通过扩展Router.parse方法实现这种行为的,但将切换到这种更符合逻辑的方法。不幸的是,停止控制器的方法并不像我预期的那样工作。当我监听“hashChanged”事件时,路由器也在监听这个事件。在这种情况下,我需要在将事件侦听器附加到“hashChange”事件之前停止路由器,这非常不舒服,否则路由器将始终在处理程序之前处理“hashChange”。可能也有比赛条件。