AngularJS를 사용하여 리디렉션


86

다음을 사용하여 다른 경로로 리디렉션하려고합니다.

$location.path("/route");

그러나 어떤 이유로 작동하지 않습니다. jQuery-UI를 사용하여 자동 완성 위젯을 수행했으며 사용자가 옵션을 선택하면 범위에서 함수를 호출합니다. 나는 그것을 디버깅하고 함수에 들어가지만 결코 다른 경로로 리디렉션되지 않습니다. 키를 누를 때만 경로가 변경됩니다.

나는 그것이 다소 이상하다고 생각하지만 이것을 해결하는 방법을 찾지 못했습니다. 나는 사용했다

window.location = "#/route";

작동하지만 path()기능 을 사용하고 싶습니다 .

왜 이런 일이 일어나는지 아는 사람이 있습니까?

답변:


109

작동하지 않는 코드의 예를 사용하면이 질문에 쉽게 대답 할 수 있지만이 정보를 사용하면 AngularJS 다이제스트 외부에서 $ location.path를 호출하는 것이 가장 좋습니다.

지시문에서 이것을 시도하십시오 scope.$apply(function() { $location.path("/route"); });


대단히 감사하고 작동하지 않는 예제를 게시하지 않아서 죄송합니다. 그러나 이것이 내 코드에 필요한 것입니다.
Tomarto

23
$ http 요청 내부의 .success 메서드에서 이것을 작동시키는 방법에 대한 아이디어가 있습니까? @Tomarto
Nicholas Kreidberg 2010 년

2
파이어 폭스 (30 ~) 콘솔에서 $ apply주기가 사용 중이라는 오류가 발생합니다
svarog

1
어떻게 작동해야하나요? 다음 오류가 발생합니다. 오류 : [$ rootScope : inprog] $ apply 이미 진행 중 errors.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply at angular.js : 78 ..... 그러므로, .. '= windows.location대로 작동되지 않은
하기 Vaibhav

1
@NicholasKreidberg는 같은 질문을하고 $ scope. $ apply (); $ location.path ( "/ route"); 바로 뒤에 나를 위해 일했습니다.
에르네스토 Allely


20

html5 라우팅을 사용하지 않는다고 가정하면 $location.path("route"). 그러면 원하는 브라우저로 리디렉션됩니다 #/route.


15

각도 응용 프로그램에서 리디렉션해야하는 경우 $window.location. 그것이 제 경우였습니다. 누군가가 유용하다고 생각하길 바랍니다.


2

라우팅 방법을 확인하십시오.

라우팅 상태가 다음과 같으면

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

그런 다음 사용해야합니다

$location.path("/app/register");

0

코드를 모르고 말하기는 어렵습니다. 내 추측은 onchangeJavaScript 코드에서 텍스트 상자 값을 변경할 때 이벤트가 발생하지 않는다는 것입니다.

이 작업에는 두 가지 방법이 있습니다. 첫 번째는 전화하는 것입니다onchange 혼자서 하는 것이고 두 번째는 텍스트 상자가 초점을 잃을 때까지 기다리는 것입니다.

이 질문을 확인하십시오 . 같은 문제, 다른 프레임 워크.

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