페이지가로드 될 때 내 웹 서버의 쿠키가 새로 고쳐 지도록 전체 페이지를 다시로드하는 리디렉션을 수행하고 싶습니다. window.location = "/#/Next"
및 window.location.href = "/#/Next"
작동하지 않습니다, 그들은 서버를 공격하지 않는 각도 경로를 않습니다.
Angular 컨트롤러 내에서 전체 서버 요청을 만드는 올바른 방법은 무엇입니까?
답변
에 대한 <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
.
보다:
답변
우리는 HTML 앵커가 아닌 JS 코드에서 작업하는 동일한 문제가 발생했습니다. 이것이 우리가 그것을 해결 한 방법입니다.
-
필요한 경우 서비스를 통해 현재 URL을 가상으로 변경
$location
합니다. 이는 목적지가 현재 URL의 변형 일 때 유용 할 수 있으므로$location
도우미 메서드를 활용할 수 있습니다 . 예를 들어$location.search(..., ...)
쿼리 문자열 매개 변수의 값을 변경하기 위해 실행 했습니다. -
$location.url()
필요한 경우 현재를 사용하여 새 도착 URL을 만듭니다. 작동하기 위해이 새로운 것은 스키마, 도메인 및 포트 이후의 모든 것을 포함해야했습니다. 예를 들어 이동하려는 경우 :http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en
그런 다음 URL을 다음과 같이 설정해야합니다.
var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';
(리딩
'/'
도 함께). -
하위 수준 에서 새 도착 URL 지정 :
$window.location.href = destinationUrl;
-
강제 재 장전, 여전히 낮은 수준 :
$window.location.reload();
답변
검색 및 히트 및 시험 세션을 제공 한 후 먼저 다음과 같은 URL을 지정하여 해결할 수 있습니다.
$window.location.href = '/#/home/stats';
그런 다음 새로 고침
$window.location.reload();
답변
나는 같은 문제가 있었다. 내가 사용하는 경우 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();
};
답변
이 시도
$window.location.href="#page-name";
$window.location.reload();