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

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

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

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

спасибо,

Алекс

7 ответов


Update: OK, Я просто решил его, используя следующий код:

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 в/просмотр

, вместо

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

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


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

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


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

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

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


лучшим ответом, который я нашел, было расширение пользовательского интерфейса.маршрутизатор, поскольку функция, не существует build in. Вы можете найти полную информацию здесь:

расширение углового 1.x ui-состояние маршрутизатора$.go

однако, вот мое краткое объяснение того, что нужно сделать, Добавьте это в приложение.js или угловой файл init приложения:

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"});