防止页面重新加载状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止页面重新加载状态相关的知识,希望对你有一定的参考价值。

如果使用AngularJs 1.6和启用了html5模式的UI-Router从窗口重载/ F5键打开应用程序,如何防止加载某些状态。

我的UI-Router配置的一部分:

.state("recordform", {
            url: "/form/:formid/:recordid",
            templateUrl: "Form.html",
        })
        .state("modalform", {
            parent: "RecordForm",
            url: "/modalform/:modalformid/:modalrecordid",
            templateUrl: "ModalForm.html"
        })

如果通过粘贴链接或浏览器中的F5打开页面,我需要阻止加载“模态”状态。

“模态”状态在模态窗口中打开,我不想在页面重新加载时打开。刷新事件结束后,应手动访问状态。

我试图检查“root”状态,如果url中有某些字符串,但root似乎不知道除了他自己之外的其他状态。

我还可以检查“模态”控制器,如果状态是从F5打开但我不知道如何做到这一点。

答案

您可以侦听状态更改事件(或在较新版本的UI路由器中实现转换挂钩),并检查以前状态是否存在。

这个想法是,如果通过页面刷新或URL粘贴访问状态,则先前的状态将不存在。

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options) {
  if (!fromState && toState.name === 'modalform') {
    event.preventDefault(); // Prevent access to the state

    // optionally redirect to other state if required
    $state.go("your_default_state");
  }
})

并且,如果从任何其他州导航,modalform州将是可访问的,因为在那个时候,toState将存在。

以上是关于防止页面重新加载状态的主要内容,如果未能解决你的问题,请参考以下文章

防止反应按钮组件中的默认按钮行为(页面重新加载)

更改选项卡时避免/防止片段刷新

防止在 django 中提交按钮后重新加载

防止在Vue.js中@click上的锚标记重新加载页面

html 输入类型提交通常在单击时重新加载页面。此片段使输入不重新加载页面以便进行ajax调用

状态变化时如何防止 useQuery 运行?