Próbuję zaimplementować funkcję „otwórz łącze w nowej karcie” przy użyciu funkcji $ state.go. Byłoby wspaniale, gdyby było coś takiego:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
Czy można to zrobić za pomocą AngularJS?
angularjs
angular-ui-router
angular-ui
Alex Arvanitidis
źródło
źródło
Odpowiedzi:
Aktualizacja: OK, właśnie rozwiązałem to za pomocą następującego kodu:
var url = $state.href('myroute', {parameter: "parameter"}); window.open(url,'_blank');
źródło
Właśnie tego spróbowałem - najwyraźniej dodawanie
target="_blank"
działa zui-sref
:<a ui-sref="routeHere" target="_blank">A Link</a>
Oszczędza kłopot z dodawaniem kodu do kontrolera i podaje adres URL po najechaniu kursorem, tak jak w przypadku każdego zwykłego łącza. Win-win!
źródło
<a ui-sref="routeHere" target="_blank" class="btn btn-primary" role="button">A Link</a>
Miałem podobny problem, spróbuj tego, jeśli nic z poprzednich odpowiedzi nie działa.
var url = '#' + $state.href('preview'); window.open(url,'_blank');
Zasadniczo podczas pracy na hoście lokalnym, bez dołączania
'#'
go, było po prostu przekierowaniem do, zamiast
Nie mówię tutaj o przekazywaniu danych, tylko po to, aby otworzyć $ state w nowej karcie.
źródło
Może nie działać na hoście lokalnym, jeśli Twoja aplikacja znajduje się w podfolderze. W rzeczywistości miałem ten sam problem.
Próbowałem online i działało zgodnie z oczekiwaniami, używając:
<a ui-sref="routeHere" target="_blank">Link</a>
źródło
ui-sref="routeHere" href=""target="_blank"
ten kod rozwiązał mój problem.
użyj tego w tagu kotwicy.
źródło
Najlepszą odpowiedzią, jaką znalazłem, było rozszerzenie ui.router, ponieważ ta funkcja nie istnieje w wersji wbudowanej. Pełne szczegóły można znaleźć tutaj:
Rozszerzanie pliku $ state.go w Angular 1.x ui-router
Jednak tutaj jest moje krótkie wyjaśnienie, co należy zrobić, dodaj to do pliku app.js lub pliku init aplikacji kątowej:
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; }]); }]);
W twoim kodzie
Będziesz mógł:
$state.goNewTab('routeHere', { parameter1 : "parameter"});
źródło
Spróbuj tego!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>
źródło