wake-up-neo.com

Angularjs $ state Link in neuem Tab öffnen

Ich versuche, eine Funktion "Link in neuem Tab öffnen" mit der Funktion "$ state.go" zu implementieren. Es wäre großartig, wenn es etwas gäbe wie:

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

Gibt es eine Möglichkeit, dies mit AngularJS zu tun?

70

Update: OK, ich habe es gerade mit dem folgenden Code gelöst:

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

Ich habe es gerade versucht - anscheinend funktioniert das Hinzufügen von target="_blank" Mit ui-sref:

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

Spart Ihnen die Mühe, Ihrem Controller Code hinzuzufügen, und zeigt Ihnen die URL beim Schweben an, wie bei jedem normalen Link. Win-Win!

54
Patrick Calulo

Auf localhost funktioniert es möglicherweise nicht, wenn sich Ihre App in einem Unterordner befindet. Ich hatte tatsächlich das gleiche Problem.

Ich habe es online versucht und es hat wie erwartet funktioniert mit:

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

Ich hatte ein ähnliches Problem, versuchen Sie dies, wenn nichts aus vorherigen Antworten für Sie funktioniert.

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

Also im Grunde während der Arbeit in localhost, ohne anzuhängen '#' es wurde nur umgeleitet zu

localhost/Vorschau

, anstatt

localhost/Projektname/#/preview

Ich gehe hier nicht auf die Übergabe der Daten ein, nur um $ state in einem neuen Tab zu öffnen.

5
Deepak Bandi

Die beste Antwort, die ich gefunden habe, war die Erweiterung des ui.router, da das Feature nicht eingebaut ist. Das vollständige Detail finden Sie hier:

Erweitern des Angular 1.x ui-routers $ state.go

Hier ist jedoch meine kurze Erklärung, was zu tun ist. Fügen Sie dies zu app.js oder angular app init file hinzu:

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

In Ihrem Code

Sie werden in der Lage sein zu tun:

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

Versuche dies!

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

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

dieser Code hat mein Problem gelöst.

verwenden Sie dies in einem Anker-Tag.

2
Zubair sadiq