wake-up-neo.com

AngularJs - Öffnen Sie die URL in einem neuen Tab

Ich habe eine Anwendung mit einer öffentlichen Seite und einer Verwaltungsseite. Ich möchte die Admin-Seite nach dem Login in einem neuen Tab öffnen ... Ich habe dies versucht, nachdem der Login erfolgreich war, jedoch ohne Wirkung. Die öffentliche Seite (auf der sich das Login befindet) wird gerade neu geladen:

var url = $state.href('/admin/overview');
$window.open(url, '_blank');

Irgendwelche Tipps wären dankbar. Vielen Dank.

14
VictorB

Hier ist ein funktionierendes JSFiddle , Sie müssen $window injizieren, bevor Sie es verwenden können:

JS:

angular.module('myApp', [])
    .controller('dummy', ['$scope', '$window', function ($scope, $window) {
    $scope.redirectToGoogle = function () {
        $window.open('https://www.google.com', '_blank');
    };
}]);

HTML:

<div ng-app="myApp" ng-controller="dummy"> 
    <a ng-href="" ng-click="redirectToGoogle()">Hello</a>
</div>
27
michelem

Hier ist eine andere Arbeit JSFiddle

HTML:

<div ng-controller="MyCtrl">
<a ng-href="{{url}}" target="_blank">Visit jsfiddle</a>
</div>

JS:

var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
    $scope.url ='http://jsfiddle.net/HB7LU/16771/';
}
13
Thomas Dijoux

Sie können eine Anweisung haben, die dies für Sie erledigt. 

directives.redirect = function ($location, $window, $rootScope) {
    return {

        link: function (scope, element, attrs) {
            element.on("click", function () {
                if (!attrs.newwindow || attrs.newwindow == false) {
                    $location.path(attrs.redirect);
                    scope.$apply();
                }
                else {
                    var baseUrl = $location.$$absUrl.toString().substring(0, decodeURIComponent($location.$$absUrl).toString().indexOf($location.$$path.toString(), $location.$$absUrl.toString().indexOf("#")) + 1) + attrs.redirect;
                    $window.open(baseUrl);
                }
            });
        }
    }
}

In HTML können Sie Folgendes zum Öffnen in einem neuen Tab verwenden: 

<a redirect="/admin/overview" newwindow="true">Open in new tab</a>
1
Adarsh Konchady

Ich habe das verwendet und es funktioniert (angle4 +): <button mat-menu-item> <a href="/faq/" target="_blank" style="color: inherit; text-decoration: none;"> <mat-icon>help</mat-icon>FAQ </a> </button>

Ich musste die Farbe auf die Standardwerte zurücksetzen und die Farben des Browsers überschreiben. Dies gibt mir immer noch den Welleneffekt und alles ohne Javascript-Code.

0
gilm

Eine einfache Methode, um den Link in einem neuen Tab zu öffnen.

 <a href="{{details.website}}" ng-click="openNewTab(details.website)"> 
    {{details.website}}
 </a>
     $scope.openNewTab = function (url) 
    {
      $window.open(url, '_blank');
     };

Vor der Verwendung sollten Sie $window in Ihre Steuerung einspritzen.

0
Gopakumar AP