使用 ui 路由器在 AngularJS 中的浏览器 back/forward 按钮上重新加载页面

Reload page on browser back/forward button in AngularJS with ui router

我的 angularjs 应用程序中 ui 路由器状态有以下配置。

    $locationProvider.html5Mode(true);
    $stateProvider
        .state('index', {
            url: '/index?zoom&center',
            views: {
                'map': {
                    controller: 'MapCtrl',
                    templateUrl: 'map.html'
                }
            },
            reloadOnSearch:false
    });

然而,浏览器中的后退前进按钮转到不同的 url,但我需要使用 urls 作为 stateParams 重新加载页面。

例如: 用户 1 转到页面 http://www.example.com/index?zoom=2&center=1,2。 然后他在页面中做了一堆操作,url变成了http://www.example.com/index?zoom=12&center=3,4

然后他按下后退按钮,url 更改为上一个,但我需要重新加载我的页面让控制器读取查询参数来做正确的事情...

有什么方法可以让它与浏览器一起工作back/forward?

您是否尝试过将 reloadOnSearch 设置为 true?如果这不符合您的需求,也许请查看这个问题:Force AngularJS to reload a route although option reloadOnSearch is set to false

一个更简单的替代方法可能是在必要时使用 window.location = newUrl 强制重新加载。