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?
Update: OK, ich habe es gerade mit dem folgenden Code gelöst:
var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');
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!
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>
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.
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"});
Versuche dies!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>
ui-sref="routeHere" href=""target="_blank"
dieser Code hat mein Problem gelöst.
verwenden Sie dies in einem Anker-Tag.