2014-05-07 55 views
51

我试图使用$ state.go函数实现“在新标签中打开链接”功能。如果有像水木清华这将是真棒:

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

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

感谢,

亚历

+0

编辑问题说你用下面的代码解决了它似乎是多余的。 IE浏览器。这是暗示你选择它作为你接受的答案。 –

+0

已修复,删除了修改。 –

回答

112

更新:

var url = $state.href('myroute', {parameter: "parameter"}); 
window.open(url,'_blank'); 
+11

这不应该是最佳实践的窗口吗? – tsuz

+3

您确定参数可以传递到新窗口吗? – elaijuh

+0

是@elaijuh他们会通过 –

46

我只是尝试这样做 - 显然,加入target="_blank"作品与ui-sref

<a ui-sref="routeHere" target="_blank">A Link</a> 

保存将代码添加到您的控制器的麻烦,并为您提供悬停时的网址与任何常规链接一样。双赢!

+2

@Luis按钮没有Target属性所以是不会工作 – gerl

+0

@Luis也许你可以使用按钮相关的类和角色作为锚标记按钮使它看起来像一个按钮。例如:'A Link' –

5

如果您的应用程序位于子文件夹中,它可能无法在本地主机上运行。 我其实也有同样的问题。

我在网上试着和它的工作通过使用如预期:

<a ui-sref="routeHere" target="_blank">Link</a> 
1

试试这个:OK,我只是用下面的代码就解决了!

<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>

+0

这是无关紧要的,我没有说我需要给我打电话的路线添加参数,我说我想在新选项卡中打开这条路线。 –

4

我有一个类似的问题,试试这个如果从以前的答案没有为你工作。

var url = '#' + $state.href('preview'); 
window.open(url,'_blank'); 

所以基本上同时工作在本地主机,而不附加'#'它只是重定向到

本地主机/预览

,而不是

本地主机/ PROJECT_NAME /#/预览

我不是在这里谈论传递数据,只是为了在新标签中打开$状态。

0
ui-sref="routeHere" href=""target="_blank" 

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

在锚标记中使用它。

相关问题