Angularjs $ stato apre il link in una nuova scheda

Sto cercando di implementare una funzione “Apri link in una nuova scheda” utilizzando la funzione $ state.go. Sarebbe fantastico se ci fosse qualcosa di simile:

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

C’è un modo per farlo usando AngularJS?

Grazie,

alex

Aggiornamento: OK, l’ho appena risolto usando il seguente codice:

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

Ho appena provato questo – apparentemente, aggiungendo target="_blank" funziona con ui-sref :

 A Link 

Salva il problema di aggiungere codice al controller e ti dà l’URL al passaggio del mouse come con qualsiasi link normale. Win-win!

Potrebbe non funzionare su localhost nel caso in cui la tua app si trovi in ​​una sottocartella. In effetti avevo lo stesso problema.

Ho provato online e ha funzionato come previsto utilizzando:

 Link 

Ho avuto un problema simile, prova questo se nulla delle risposte precedenti funziona per te.

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

Quindi, in pratica, mentre si lavora in localhost, senza aggiungere '#' è stato solo redirect a

localhost / anteprima

, invece di

localhost / NOME_PROGETTO / # / anteprima

Non mi sto occupando del passaggio dei dati, solo per aprire $ state in una nuova scheda.

Prova questo!

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

questo codice ha risolto il mio problema.

usalo in un tag di ancoraggio.

La risposta migliore che ho trovato è stata l’estensione di ui.router, dal momento che la funzione non esiste incorporata. Puoi trovare tutti i dettagli qui:

Estensione del $ state.go del router uI-router 1.x angular

Tuttavia, ecco la mia breve spiegazione su cosa deve essere fatto, aggiungilo al file init app.js o angular app:

 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; }]); }]); 

Nel tuo codice

Sarai in grado di fare:

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