javascript - Angular JS - 如何强制浏览器记录历史记录以进行快速路由?

标签 javascript angularjs

我的网站(尚未上线)采用了 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);
}

$http documentation

关于javascript - Angular JS - 如何强制浏览器记录历史记录以进行快速路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426395/

相关文章:

javascript - Angular UI 工具提示溢出屏幕

c# - 有没有办法从 C# 调用/运行 JavaScript?

javascript - 展平数组,即 [[1, 2, 3], [4, 5], [6]] 应该给出 [1, 2, 3, 4, 5, 6] 的输出。代码中的错误来源

javascript - Angularjs 模式关闭时不运行代码

javascript - 平滑 jQuery 密码确认验证

javascript - 我使用 ng-class 有什么问题?

javascript - AngularJS 中的 HTTP promise 对象是什么?

javascript - 在自定义指令上转义 HTML

javascript - 在数据库中搜索并显示结果 Express Node Angular MEAN.js $resource

javascript - 如何不在 JQuery Mobile 日历中突出显示当前日期