【问题标题】:AngularJS back button not working after $window.location change$window.location 更改后 AngularJS 后退按钮不起作用
【发布时间】:2017-03-07 14:27:19
【问题描述】:

我使用 md-grid-tiles 作为网站上新页面的链接。为了提供一些上下文,我有一个 AngularJS 1 应用程序,它是一个使用 ng-view 的单页应用程序。所以我的链接都是用#page格式化的。每个图块都有一个名为 link 的属性,我附上了这个函数:

$scope.direct = function(tile) {
    $window.location.href = tile.link;
}

到我的 md-grid-tile 上的 ng-click 部分:

<md-grid-tile ng-repeat="tile in vm.tiles track by $index"
                              md-rowspan="{{tile.span.row}}"
                              md-colspan="{{tile.span.col}}"
                              md-colspan-sm="1"
                              md-colspan-xs="1"
                              ng-class="tile.background"
                              ng-click="direct(tile)">

tile.link 变量将是 '#newpagetogoto'

这按预期工作,但在我使用此方法重新路由后,后退按钮功能不存在。当我在进入新页面后按下返回时,它只会重新加载该新视图并且不会让我回到主页。有没有办法解决这个问题?

如果我使用&lt;a&gt; 链接到我网站的新视图,则后退按钮功能按预期工作,但只有当我使用 $window.location.href 时,它才会破坏后退按钮功能。

&lt;a&gt;使用示例:

<a href="#about" onclick="closeNav()">Our Purpose</a>

非常感谢任何和所有帮助,在此先感谢!

编辑: 使用&lt;a&gt; 实际上并没有保留后退按钮功能,使用&lt;a&gt; 链接进行路由时也会中断。

【问题讨论】:

    标签: javascript angularjs angularjs-scope angular-material angularjs-ng-route


    【解决方案1】:

    您必须使用 $location 而不是 $window

    $location.path(title.link)
    

    查看 $location 文档:https://docs.angularjs.org/guide/$location

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2014-12-27
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多