[angularjs] Angularjs $ state 새 탭에서 링크 열기

$ state.go 함수를 사용하여 “새 탭에서 링크 열기”기능을 구현하려고합니다. 다음과 같은 smth가 있으면 멋질 것입니다.

$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을 제공합니다. 윈윈!


답변

비슷한 문제가 발생했습니다. 이전 답변에서 아무것도 효과가 없으면 이것을 시도하십시오.

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

그러니까 기본적으로 추가하지 않고, 로컬 호스트에서 작업하는 동안 '#'단지로 리디렉션 된

localhost / 미리보기

, 대신에

localhost / Project_Name / # / preview

나는 여기에서 데이터를 전달하는 것이 아니라 새 탭에서 $ state를 여는 것입니다.


답변

앱이 하위 폴더에있는 경우 localhost에서 작동하지 않을 수 있습니다. 사실 같은 문제가있었습니다.

나는 온라인으로 시도했고 다음을 사용하여 예상대로 작동했습니다.

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


답변

내가 찾은 가장 좋은 대답은 ui.router를 확장하는 것이 었습니다. 기능이 빌드에 존재하지 않기 때문입니다. 자세한 내용은 여기에서 찾을 수 있습니다.

Angular 1.x ui-router의 $ state.go 확장

그러나 다음은 app.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"});


답변

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

이 코드는 내 문제를 해결했습니다.

앵커 태그에서 사용하십시오.


답변

이 시도!

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