【问题标题】:Angularjs Refresh page (f5) cancel routingAngularjs刷新页面(f5)取消路由
【发布时间】:2017-11-27 21:49:55
【问题描述】:

我的网页上有这个路由:

app.config(function($routeProvider)
{
    $routeProvider
        .when("/",
            {
                //
            })
        .when("/DokumentRoute",
            {
                templateUrl : "static/routes/dokument.html",
                controller : "dokumentController"
            })
        .when("/MarkningarRoute",
            {
                templateUrl : "static/routes/markning.html",
                controller: "markningarController"
            })
        .otherwise(
            {
                templateUrl: "static/routes/pageNotFound.html",
                controller : "pageNotFoundController"
            });
});

当我刷新页面时 (F5) 我想取消路由,这意味着我不想在 ng-view 标记中显示任何内容

<div ng-view id="view"></div>

这就是现在发生的事情:

当我启动网页时,它没有显示路由页面。我点击“文档”,它会转到文档页面,该页面显示在 ng-view 标记中。

当我按 F5 时页面刷新,但它仍然显示文档路线!

这就是我想要的:

我想清除路由。我希望网站看起来像我第一次进入它时的样子。 (在 ng-view 标签中没有显示)

我该如何解决这个问题?

【问题讨论】:

  • 您可以在每次页面加载时使用window.onload=function(){$location.path("/")} 切换到主视图。如果您只想在特殊视图上使用此功能,请将其添加到视图的控制器中(您必须将 $location 注入您的控制器,并且只能在您的控制器中使用它。否则这将无法工作)。
  • 或者如果你想在控制器之外使用它,你可以使用:history.pushState('', 'New Page Title', "/");(参考:stackoverflow.com/questions/824349/…
  • 你有没有尝试在你的html index.html 中放入一个类似 的标签?

标签: javascript angularjs ngroute ng-view


【解决方案1】:

如果有人感兴趣,我就是这样解决的:

app.run(function ($location, $rootScope) {

    $rootScope.$on('$routeChangeStart', function (event, next, current) {
        if (!current) {
            $location.path('/');
        }
    });
});

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2015-12-09
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2013-12-04
    • 2015-07-31
    相关资源
    最近更新 更多