Angularjs $ state open link em nova aba

Estou tentando implementar uma function “abrir link em nova aba” usando a function $ state.go. Seria incrível se houvesse algo como:

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

Existe alguma maneira de fazer isso usando o AngularJS?

Obrigado,

Alex

Atualização: OK, resolvi usando o seguinte código:

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

Eu apenas tentei isso – aparentemente, adicionando target="_blank" funciona com ui-sref :

 A Link 

Salva o trabalho de adicionar código ao seu controlador e fornece o URL em foco como em qualquer link normal. Vantajoso para as duas partes!

Pode não funcionar no host local caso seu aplicativo esteja em uma subpasta. Eu tive de fato o mesmo problema.

Eu tentei online e funcionou como esperado usando:

 Link 

Eu tive um problema semelhante, tente isso se nada de respostas anteriores trabalhar para você.

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

Então, basicamente, enquanto trabalhava em localhost, sem acrescentar '#' ele estava apenas redirecionando para

localhost / preview

, ao invés de

localhost / Project_Name / # / preview

Eu não estou tomando aqui sobre passar os dados, apenas para abrir $ state em nova aba.

Tente isso!

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

esse código resolveu meu problema.

use isso em uma tag de âncora.

A melhor resposta que encontrei, foi estendendo o ui.router, já que o recurso, não existe build in. Você pode encontrar todos os detalhes aqui:

Estendendo o $ state.go do roteador do Angular 1.x.go

No entanto, aqui está minha breve explicação sobre o que precisa ser feito, adicione isso ao app.js ou ao arquivo init do aplicativo angular:

 angular.module("AppName").config(['$provide', function ($provide) { $provide.decorator('$state', ['$delegate', '$window', function ($delegate, $window) { var extended = { goNewTab: function (stateName, params) { $window.open( $delegate.href(stateName, params, { absolute: true }), '_blank'); } }; angular.extend($delegate, extended); return $delegate; }]); }]); 

No seu código

Você poderá fazer:

 $state.goNewTab('routeHere', { parameter1 : "parameter"});