AngularJS는 이력 상태를 푸시하지 않고 리다이렉트한다.
Angular Angular를앱 "JS").when('/:slug', {...)
이전 버전의 앱에서 레거시 URL 형식을 지원하는 데 필요합니다.된 오브젝트를수 없는 catch all을 .찾을 수 없는 경우 를 사용하여404 페이지로 리다이렉트 합니다.$location.path
수 됩니다.이것은 사용자를 404 페이지로 이동시키는 데 도움이 되지만, 사용자가 브라우저로 되돌아가면 처음에 강제로 404 페이지로 이동시켰던 페이지로 돌아가 결국 사이클을 벗어날 수 없게 됩니다.
질문입니다만 1) 이 상황에 대처하기 위한 더 나은 패턴이 있는지, 아니면 2) 브라우저에서 이력 푸시 상태를 강제하지 않는 사용자를 재루팅할 방법이 있는지 여부입니다.
"교체 방법"에 있는 기록 상태에 추가하지 않고 URL을 변경할 수 있습니다.이는 사실상 HTML5의 history.replaceState()를 호출하는 것과 같습니다.
$location.path('/someNewPath').replace();
url을 변경하지 않고 뷰를 변경할 수 있는 것은 아직 발견되지 않았습니다.뷰를 변경하는 유일한 방법은 위치 경로를 변경하는 것입니다.
은, 「」의 입니다.$route
하는 $locationChangeSuccess
을 사용법 및 .$routeChangeSuccess
그 이벤트.$routeChangeSuccess
대상입니다.ng-view
새로운 루트가 준비되면 템플릿과 스코프를 교환하는 방법을 알 수 있습니다.
하면, 코드로 「」의을 에뮬레이트 하는 이 기능하는 경우가 .$route
현재 루트를 갱신하고 루트 변경 이벤트를 전송하여 뷰를 갱신합니다.
var errorRoute = $route.routes[null]; // assuming the "otherwise" route is the 404
// a route instance is an object that inherits from the route and adds
// new properties representing the routeParams and locals.
var errorRouteInstance = angular.inherit(
errorRoute,
{
params: {},
pathParams: {},
}
);
// The $route service depends on this being set so it can recover the route
// for a given route instance.
errorRouteInstance.$$route = errorRoute;
var last = $route.current;
$route.current = errorRouteInstance;
// the ng-view code doesn't actually care about the parameters here,
// since it goes straight to $route.current, but we should include
// them anyway since other code might be listening for this event
// and depending on these params to behave as documented.
$rootScope.broadcast('$routeChangeSuccess', errorRoute, last);
상기의 경우, 「그 이외의」루트에 「해결」스텝이 없는 것을 전제로 하고 있습니다. 「 」 「 」 「 」 「 」 「 」 「 」 에는 기대를 걸지 않는 로 하고 있습니다.$routeParams
이는 물론 '경로' 루트에 해당되지만 다른 루트를 사용하는 경우에는 해당되지 않을 수 있습니다.
구현 세부 정보와 인터페이스에 따라 위의 항목 중 무엇이 달라지는 불분명합니다.$routeChangeSuccess
만, 「 」는 「 」입니다.$$route
루트 인스턴스의 속성은 더블 달러 기호 이름으로 지정된 루트시스템의 구현 상세인 것 같습니다.키를 사용하여 루트테이블에 유지되는 '그렇지 않은' 루트의 상세null
구현에 관한 상세 정보일 수도 있습니다.따라서 이 모든 것이 언급되어 있지만, 이 동작은 향후 버전의 Angular에서는 기능하지 않을 수 있습니다.JS.
상세한 것에 대하여는, 이 이벤트를 취급하는 코드를 참조해 주세요.이 코드는, 상기의 예에 근거해 사용한 이벤트 송신 코드와 함께, 최종적으로 상기의 코드가 만족하려고 하는 것입니다.이러한 링크에서 추론할 수 있듯이 이 게시물의 정보는 작성 시 1.2.0-snapshot이라고 라벨이 붙어 있는 AngularJs의 최신 마스터브런치에서 취득한 것입니다.
언급URL : https://stackoverflow.com/questions/19012915/angularjs-redirect-without-pushing-a-history-state
'programing' 카테고리의 다른 글
jq - 오브젝트의 부모 값을 인쇄하려면 어떻게 해야 합니까? (0) | 2023.03.18 |
---|---|
Vagrant에서 호스트와 게스트 간의 동기화 지연 시간 단축(NFS 동기화 폴더) (0) | 2023.03.18 |
AngularJS DOM 선택기 (0) | 2023.03.18 |
Angular JS가 있는 링크에 조건부로 target="_blank" 추가 (0) | 2023.03.18 |
Spring Application Configuration을 찾을 수 없음: 잘못된 Spring-boot-starter-test 내용입니까? (0) | 2023.03.18 |