programing

$window 또는 $location을 사용한 각도 리다이렉트JS

lovejava 2023. 2. 23. 21:56

$window 또는 $location을 사용한 각도 리다이렉트JS

작업 중인 앱에는 다양한 상태(ui-router 사용)가 포함되어 있으며, 일부 상태에서는 로그인이 필요하고 다른 상태에서는 공개적으로 사용할 수 있습니다.

사용자가 로그인하고 있는지, 현재 문제가 발생하고 있는 것은 실제로 필요에 따라 로그인 페이지로 리다이렉트 하는 방법을 만들었습니다.로그인 페이지는 현재 Angular 내에 배치되어 있지 않습니다.JS 앱

app.run(function ($rootScope, $location, $window) {

    $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {

        if (toState.data.loginReq && !$rootScope.me.loggedIn) {
            var landingUrl = $window.location.host + "/login";
            console.log(landingUrl);
            $window.open(landingUrl, "_self");
        }
    });
});

console.log에 원하는 URL이 올바르게 표시됩니다.그 후의 행은 $window.open부터 window.location까지 거의 모든 것을 시도해 보았습니다.href, 그리고 내가 어떤 시도를 해도 방향 수정은 일어나지 않습니다.

저는 이걸 하는 방법은$location.url('/RouteTo/Login');

로그인 뷰에 대한 나의 경로는 다음과 같습니다./Login라고 말할 수 있을 것 같다.$location.url('/Login')이 루트로 이동합니다.

Angular 앱(루트가 정의되어 있지 않은 경우) 이외의 장소에서는 플레인오래된 JavaScript가 다음 서비스를 제공합니다.

window.location = "http://www.my-domain.example/login"

페이지 전체를 새로고침하려면$window.location.href권장되는 방법입니다.

브라우저 URL이 변경되어도 페이지 전체가 새로고침되지는 않습니다.URL 변경 후 페이지를 새로고침하려면 하위 API인 $window.location.href를 사용합니다.

https://docs.angularjs.org/guide/$location

도움이 될 수 있습니다! 데모

AngularJs 코드 샘플

var app = angular.module('urlApp', []);
app.controller('urlCtrl', function ($scope, $log, $window) {
    $scope.ClickMeToRedirect = function () {
        var url = "http://" + $window.location.host + "/Account/Login";
        $log.log(url);
        $window.location.href = url;
    };
});

HTML 코드 샘플

<div ng-app="urlApp">
    <div ng-controller="urlCtrl">
        Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a>
    </div>
</div>

어떤 버전인지 모르겠지만, 저는 1.3.14를 사용하고 있기 때문에, 다음의 것을 사용할 수 있습니다.

window.location.href = '/employee/1';

주입 불필요$location또는$window현재 호스트 주소를 얻을 필요가 없습니다.

다음 사항을 입력해야 합니다.

<http ng-app="urlApp" ng-controller="urlCtrl">

이렇게 하면 각도 함수가 "창" 개체에 액세스할 수 있습니다.

언급URL : https://stackoverflow.com/questions/24794115/using-window-or-location-to-redirect-in-angularjs