AngularJS-전체 페이지로드로 리디렉션을 수행하려면 어떻게해야합니까?


94

페이지가로드 될 때 내 웹 서버의 쿠키가 새로 고쳐 지도록 전체 페이지를 다시로드하는 리디렉션을 수행하고 싶습니다. window.location = "/#/Next"window.location.href = "/#/Next"작동하지 않습니다, 그들은 서버를 공격하지 않는 각도 경로를 않습니다.

Angular 컨트롤러 내에서 전체 서버 요청을 만드는 올바른 방법은 무엇입니까?


8
이 문제를 해결 했습니까?
superjos

7
이 문제를 해결 했습니까?
Nolwennig

6
이 문제를 해결 했습니까?
Dan Beaulieu

5
이 문제를 해결 했습니까?
My Stack Overfloweth

4
이 문제를 해결 했습니까?
shahzain ali

답변:


183

에 대한 <a>태그 :

당신 target="_self"은 당신의 <a>태그 를 붙일 필요가 있습니다

AngularJS가 전체 페이지 다시로드를 수행하는 세 가지 경우가 있습니다.

  • 대상 요소를 포함하는 링크
    예 :<a href="https://stackoverflow.com/ext/link?a=b" target="_self">link</a>
  • 다른 도메인으로 이동하는 절대 링크
    예 :<a href="http://angularjs.org/">link</a>
  • 기본이 정의 된 경우 다른 기본 경로로 연결되는 '/'로 시작하는 링크
    예 :<a href="https://stackoverflow.com/not-my-base/link">link</a>

자바 스크립트 사용 :

$location서비스를 사용하면 URL 만 변경할 수 있습니다. 페이지를 다시로드 할 수 없습니다. URL을 변경하고 페이지를 새로 고침하거나 다른 페이지로 이동해야하는 경우 하위 수준 API를 사용하세요 $window.location.href.

보다:


15
$ window.location.href는 window.location.href와 동일한 작업을 수행합니다. $ window는 창을위한 포장 서비스 일 뿐이라고 확신합니다. 어느 쪽이든 전체 페이지 새로 고침 대신 Angular 경로를 수행합니다.
Mike Pateras 2013

3
$ window.location.href는 확실히 전체 페이지 새로 고침을 유발합니다. 내 앱에서 수행하고 있습니다.
jszobody

3
나는 똑같은 것을 읽었습니다. 현재 버전의 Chrome에서는 작동하지 않습니다. Angular 경로를 수행합니다.
Mike Pateras 2013

1
1.0.6 CDN에서. 나는 콜백 외부에서 시도했지만 동일한 결과를 얻었지만 중요한 경우 $ http.post 성공 콜백 내에서 이것을하고 있습니다. "/"로 리디렉션하면 (Angular 경로도 정의되어 있음) 전체 페이지 새로 고침과 함께 작동하지만 "/ # / Next"는보기 변경 만 수행합니다.
Mike Pateras 2013

5
<a href="..." target="_self">나를 위해 일한 것입니다. 감사 !
Michael

33

우리는 HTML 앵커가 아닌 JS 코드에서 작업하는 동일한 문제가 발생했습니다. 이것이 우리가 그것을 해결 한 방법입니다.

  1. 필요한 경우 서비스를 통해 현재 URL을 가상으로 변경 $location합니다. 이는 목적지가 현재 URL의 변형 일 때 유용 할 수 있으므로 $location도우미 메서드를 활용할 수 있습니다 . 예를 들어 $location.search(..., ...)쿼리 문자열 매개 변수의 값을 변경하기 위해 실행 했습니다.

  2. $location.url()필요한 경우 현재를 사용하여 새 도착 URL을 만듭니다. 작동하기 위해이 새로운 것은 스키마, 도메인 및 포트 이후의 모든 것을 포함해야했습니다. 예를 들어 이동하려는 경우 :

    http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en

    그런 다음 URL을 다음과 같이 설정해야합니다.

    var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';

    (리딩 '/'도 함께).

  3. 하위 수준 에서 새 도착 URL 지정 :$window.location.href = destinationUrl;

  4. 강제 재 장전, 여전히 낮은 수준 : $window.location.reload();


1
이것은 Chrome 38을 사용하는 Angular 1.3.1에서는 작동하지 않습니다. $ window.location.href의 값은 경로 나 전체 URL을 할당 할 때 변경되지 않습니다. $ window.location.assign () 만 나를 위해 일했습니다.
FelixM 2014

펠릭스와 같은 문제가 다른 방법으로 그것을 해결 stackoverflow.com/questions/31137809/...
Soroush Hakami에게

13

검색 및 히트 및 시험 세션을 제공 한 후 먼저 다음과 같은 URL을 지정하여 해결할 수 있습니다.

$window.location.href = '/#/home/stats';

그런 다음 새로 고침

$window.location.reload();

이것은 문제를 해결하는 것처럼 보이지만 브라우저에서 앞뒤로 클릭하면 많은 불일치가 발생합니다.
luisluix

9

나는 같은 문제가 있었다. 내가 사용하는 경우 window.location, $window.location또는 <a href="..." target="_self">경로는 페이지를 새로 고침하지 않습니다. 따라서 내 앱에서 원하는 것이 아닌 캐시 된 서비스가 사용됩니다. 라우팅 후 페이지를 강제로 다시로드하도록 window.location.reload()after window.location를 추가하여 문제를 해결했습니다 . 이 방법은 페이지를 두 번로드하는 것 같습니다. 더러운 속임수 일지 모르지만 작동합니다. 이것이 내가 지금 가지고있는 방법입니다.

  $scope.openPage = function (pageName) {
      window.location = '#/html/pages/' + pageName;
      window.location.reload();
  };

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.