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


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

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

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

спасибо,

Алекс

7 59

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 в новой вкладке.

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

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

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