使用 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¢er',
views: {
'map': {
controller: 'MapCtrl',
templateUrl: 'map.html'
}
},
reloadOnSearch:false
});
然而,浏览器中的后退前进按钮转到不同的 url,但我需要使用 urls 作为 stateParams 重新加载页面。
例如:
用户 1 转到页面 http://www.example.com/index?zoom=2¢er=1,2。
然后他在页面中做了一堆操作,url变成了http://www.example.com/index?zoom=12¢er=3,4
然后他按下后退按钮,url 更改为上一个,但我需要重新加载我的页面让控制器读取查询参数来做正确的事情...
有什么方法可以让它与浏览器一起工作back/forward?
您是否尝试过将 reloadOnSearch
设置为 true?如果这不符合您的需求,也许请查看这个问题:Force AngularJS to reload a route although option reloadOnSearch is set to false
一个更简单的替代方法可能是在必要时使用 window.location = newUrl 强制重新加载。
我的 angularjs 应用程序中 ui 路由器状态有以下配置。
$locationProvider.html5Mode(true);
$stateProvider
.state('index', {
url: '/index?zoom¢er',
views: {
'map': {
controller: 'MapCtrl',
templateUrl: 'map.html'
}
},
reloadOnSearch:false
});
然而,浏览器中的后退前进按钮转到不同的 url,但我需要使用 urls 作为 stateParams 重新加载页面。
例如: 用户 1 转到页面 http://www.example.com/index?zoom=2¢er=1,2。 然后他在页面中做了一堆操作,url变成了http://www.example.com/index?zoom=12¢er=3,4
然后他按下后退按钮,url 更改为上一个,但我需要重新加载我的页面让控制器读取查询参数来做正确的事情...
有什么方法可以让它与浏览器一起工作back/forward?
您是否尝试过将 reloadOnSearch
设置为 true?如果这不符合您的需求,也许请查看这个问题:Force AngularJS to reload a route although option reloadOnSearch is set to false
一个更简单的替代方法可能是在必要时使用 window.location = newUrl 强制重新加载。