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.
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>
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/';
}
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>
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.
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.