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