我的网站(尚未上线)采用了 angularjs 路由。当页面登陆时,根据快速条件检查,它会将我们引导至第二页。路由发生得非常快,浏览器不存储第一页的历史记录。我们还启用了后退按钮功能,该功能不起作用,因为未存储历史记录。此外,首页上有几个外部链接,需要几秒钟才能加载。因此,当这些外部链接加载时,会出现第一页,并检查条件并将其路由到第二页。对于强制浏览器记录第一页的历史记录有什么想法或解决方案吗?
对此的其他想法:有没有办法让首页等待所有外部链接完全加载然后进行路由?
我已经通过 Google 进行了搜索,但尚未找到解决方案。非常感谢任何形式的帮助。
最佳答案
导航历史记录
您应该实现 StateHistory
服务,该服务应该具有将状态添加到私有(private)数组中的方法,以及诸如getPreviusState()
之类的方法
然后您可以在$stateChangeSuccess
上添加每个州事件(使用angular ui-router)
angular.module('myApp', ['ui.router'])
.run(function($rootScope, navigationHistory){
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState, fromParams) {
navigationHistory.addVisitedState(toState,toParams);
};
});
加载资源时导航
使用$http
获取资源(html 或其他),并作为 callback
使用$state.go
向前导航。
angular.module('myApp')
.controller('AppCtrl', function($state,){
$http.get('/someUrl'). // $http.get('page.html') / etc
success(function(data, status, headers, config) {
// save data or add it on the view/template
$state.go('secondState');
//Or
//$state.go(navigationHistory.getLastState().name);
}).
error(errBack);
}
关于javascript - Angular JS - 如何强制浏览器记录历史记录以进行快速路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426395/