Angularjs $在新标签页中打开链接

Ale*_*dis 73 angularjs angular-ui angular-ui-router

我正在尝试使用$ state.go函数实现"在新选项卡中打开链接"功能.如果有像这样的smth会很棒:

$state.go('routeHere', {
    parameter1 : "parameter"
    }, {
    reload : true,
    newtab : true // or smth like target : "_blank"
});
Run Code Online (Sandbox Code Playgroud)

有没有办法用AngularJS做到这一点?

Ale*_*dis 143

更新:好的,我刚刚使用以下代码解决了它:

var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');
Run Code Online (Sandbox Code Playgroud)

  • 这不应该是最佳做法的窗口吗? (17认同)
  • 你确定参数可以传递到新窗口吗? (3认同)

小智 54

我刚试过这个 - 显然,添加以下target="_blank"作品ui-sref:

<a ui-sref="routeHere" target="_blank">A Link</a>
Run Code Online (Sandbox Code Playgroud)

省去了向控制器添加代码的麻烦,并为您提供了悬停的URL和任何普通链接一样.双赢!

  • 这仅适用于<a>."目标"显然不适用于其他元素.即<button ui-sref ="routeHere"target ="_ blank"> A Link </ button> (3认同)
  • @Luis按钮没有Target属性所以是的它不会工作 (2认同)

Fra*_*ssi 6

如果您的应用位于子文件夹中,它可能无法在localhost上运行.事实上,我有同样的问题.

我已尝试在线,它按预期使用:

<a ui-sref="routeHere" target="_blank">Link</a>
Run Code Online (Sandbox Code Playgroud)


Dee*_*ndi 6

我有一个类似的问题,如果以前的答案中没有任何内容适合您,请尝试这个.

var url = '#' + $state.href('preview');
window.open(url,'_blank');
Run Code Online (Sandbox Code Playgroud)

所以基本上在localhost中工作时,没有附加'#'它只是重定向到

本地主机/预览

, 代替

本地主机/ PROJECT_NAME /#/预览

我不是在这里传递数据,只是在新标签中打开$ state.


小智 5

ui-sref="routeHere" href=""target="_blank"
Run Code Online (Sandbox Code Playgroud)

这段代码解决了我的问题。

在锚标记中使用它。