AngularJS UI 路由器 - 在新的浏览器选项卡中使用数据打开状态

Posted

技术标签:

【中文标题】AngularJS UI 路由器 - 在新的浏览器选项卡中使用数据打开状态【英文标题】:AngularJS UI Router - open state with data in new browser tab 【发布时间】:2016-10-15 12:22:12 【问题描述】:

我在尝试在新的浏览器选项卡中打开状态时遇到问题。当它在新的浏览器选项卡中打开时,它应该解析异步调用以填充数据。这可能与angularjs ui路由器有关吗?

这是我的 ui 路由器设置:

.state('snapshots.user_detail', 
  url: "/user/detail/userID:[0-9]+",
  templateUrl: function($stateParams) 
    return "user/detail/" + $stateParams.userID;
  ,
  controller: "userDetailCtrl as userDetailCtrl",
  resolve: 
    async: ['userService', '$stateParams',
      function(userService, $stateParams) 
        alert("running detail ctrl async");
        return userService.getUser($stateParams.userID);
      
    ]
  
)

userDetailCtrl:

function userDetailCtrl($scope, async) 
  "use strict";
  var self = this;
  self.user = async;

【问题讨论】:

这不是违背了 Angular 作为 SPA 的目的吗?我以前从来没有这样做过…… 【参考方案1】:

看来我的问题与在 angularjs 中启用 html5mode 有关。

要继续使用 html5mode,我可以按照 angular ui 路由器网站的建议进行 url 重写,或者将后端的所有路由重定向到指向索引,如下所示:

Spring Boot with AngularJS html5Mode

我可以完全禁用 html5mode,因为我意识到它默认支持我需要的功能。

人们倾向于在新的浏览器标签中打开链接。实际上,我正在努力满足这种需求。

【讨论】:

以上是关于AngularJS UI 路由器 - 在新的浏览器选项卡中使用数据打开状态的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:打开一个新的浏览器窗口,但仍保留范围和控制器以及服务

AngularJS:通过 UI 路由器加载 js 文件

使用前端路由防止 iOS chrome 状态栏重新出现

AngularJS ui-router (嵌套路由)

用于 Kendo UI 移动的 AngularJS 路由

AngularJS ui-router (嵌套路由)的简单学习