Подтвердить что ты не робот

Angularjs $state открыть ссылку на новой вкладке

Я пытаюсь реализовать функцию "открытая ссылка в новой вкладке" с помощью функции $state.go. Было бы здорово, если бы было что-то вроде:

$state.go('routeHere', {
    parameter1 : "parameter"
    }, {
    reload : true,
    newtab : true // or smth like target : "_blank"
});

Есть ли способ сделать это с помощью AngularJS?

Спасибо,

Алекс

4b9b3361

Ответ 1

Обновление: ОК, я просто решил это, используя следующий код:

var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');

Ответ 2

Я просто попробовал это - видимо, добавив target="_blank" работает с ui-sref:

<a ui-sref="routeHere" target="_blank">A Link</a>

Сохраняет проблему с добавлением кода на ваш контроллер и дает вам URL-адрес при наведении курсора, как и с любой обычной ссылкой. Беспроигрышная!

Ответ 3

Он может не работать на localhost, если ваше приложение находится в подпапке. У меня была та же проблема.

Я пробовал онлайн, и он работал как ожидалось, используя:

<a ui-sref="routeHere" target="_blank">Link</a>

Ответ 4

У меня была аналогичная проблема, попробуйте, если ничего из предыдущих ответов не будет работать для вас.

var url = '#' + $state.href('preview');
window.open(url,'_blank');

Таким образом, в основном при работе в localhost без добавления '#' он просто перенаправлялся на

локальный/предварительный просмотр

вместо

локальный/PROJECT_NAME/#/предварительный просмотр

Я не берусь здесь про передачу данных, просто чтобы открыть $state на новой вкладке.

Ответ 5

Попробуйте это!

<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>

Ответ 6

ui-sref="routeHere" href=""target="_blank"

этот код решил мою проблему.

используйте это в теге привязки.

Ответ 7

Лучший ответ, который я нашел, - это расширение 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"});