Angularjs $state открыть ссылку в новой вкладке
Я пытаюсь реализовать функцию "Открыть ссылку в новой вкладке" с помощью $state.идут функции. Было бы здорово, если бы было что-то вроде:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
есть ли способ сделать это с помощью AngularJS?
спасибо,
Алекс
7 ответов:
обновление: ОК, я просто решил ее с помощью следующего кода:
var url = $state.href('myroute', {parameter: "parameter"}); window.open(url,'_blank');
Я просто попробовал это -- видимо, добавив
target="_blank"
работает сui-sref
:<a ui-sref="routeHere" target="_blank">A Link</a>
сохраняет проблему добавления кода к контроллеру, и дает вам URL при наведении курсора, как с любой нормальной ссылкой. Выиграть-выиграть!
он может не работать на localhost в случае, если ваше приложение находится в подпапке. У меня была на самом деле та же проблема.
Я пробовал онлайн, и он работал, как ожидалось, используя:
<a ui-sref="routeHere" target="_blank">Link</a>
у меня была аналогичная проблема, попробуйте это, если ничего из предыдущих ответов работа для вас.
var url = '#' + $state.href('preview'); window.open(url,'_blank');
Так что в основном при работе в localhost, без добавления
'#'
это было просто перенаправление наlocalhost / preview
, вместо
localhost/Project_Name / # / preview
Я не беру здесь о передаче данных, просто чтобы открыть $state в новой вкладке.
ui-sref="routeHere" href=""target="_blank"
этот код решил мою проблему.
используйте это в теге привязки.
лучший ответ, который я нашел, был расширение пользовательского интерфейса.маршрутизатор, так как функция, не существует сборки. Вы можете найти полную информацию здесь:
расширение углового 1.x ui-состояние маршрутизатора$.иди
однако, вот мое краткое объяснение того, что нужно сделать добавить это в приложение.js или угловой файл инициализации приложения:
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; }]); }]);
в коде
Вы сможете делать:
$state.goNewTab('routeHere', { parameter1 : "parameter"});