Angularjs $ state ouvre le lien dans un nouvel onglet

J’essaie d’implémenter une fonction “open link in new tab” en utilisant la fonction $ state.go. Ce serait génial s’il y avait un peu comme:

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

Y at-il un moyen de le faire en utilisant AngularJS?

Merci,

Alex

Mise à jour: OK, je viens de résoudre le problème en utilisant le code suivant:

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

J’ai juste essayé ceci – apparemment, l’ajout de target="_blank" fonctionne avec ui-sref :

 A Link 

Enregistre la difficulté d’append du code à votre contrôleur et vous donne l’URL en vol stationnaire comme avec tout lien normal. Gagnant-gagnant!

Cela ne fonctionnera peut-être pas sur localhost si votre application se trouve dans un sous-dossier. J’avais en fait le même problème.

J’ai essayé en ligne et cela a fonctionné comme prévu en utilisant:

 Link 

J’ai eu un problème similaire, essayez ceci si rien des réponses précédentes ne fonctionne pour vous.

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

Donc, fondamentalement, tout en travaillant dans localhost, sans append '#' il s’agissait simplement de redirect vers

localhost / preview

, au lieu de

localhost / Nom_projet / # / preview

Je ne prends pas ici pour passer les données, juste pour ouvrir $ state dans un nouvel onglet.

Essaye ça!

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

ce code a résolu mon problème.

utilisez ceci dans une balise d’ancrage.

La meilleure réponse que j’ai trouvée était l’extension de ui.router, car la fonctionnalité n’existe pas. Vous pouvez trouver le détail complet ici:

Extension du $ state.go du routeur de l’interface utilisateur angular 1.x

Cependant, voici ma brève explication de ce qui doit être fait, ajoutez ceci à app.js ou au fichier d’initialisation de l’application 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; }]); }]); 

Dans votre code

Vous pourrez faire:

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