2014-05-07 95 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" 

這段代碼解決了我的問題。

在錨標記中使用它。

相關問題