2014-05-21 4 views
2

모두

나는 현재 작업중인 AngularJS PhoneGap 응용 프로그램을 가지고 있습니다. API 호출 응답을받은 직후에 발생하는 하나의 리디렉션에 멈추었습니다. 내 코드는 gist.github.com

에 있습니다. 내 문제는 then() 블록 내에서 리디렉션을 호출하는 controllers.js의 300 행에 있습니다.

UserService.login($scope.user.email, $scope.user.password) 
      .then(function(response) { 

       globals.session_id = response.data.meta.session_id; 
       globals.logged_in_userId = response.data.response.users[0].id; 

       if ($scope.user.remember === true) { 
        window.localStorage.setItem("_session_id", response.data.meta.session_id); 
        window.localStorage.setItem("logged_in_userId", response.data.response.users[0].id); 
       } else { 
        window.localStorage.removeItem("_session_id"); 
        window.localStorage.removeItem("logged_in_userId"); 
       } 
      }) 
      .then(function() { 
       $location.path("/tab/locations");// <=== This line doesn't cause an error but does not result in a redirect 
      }) 
      . 
     catch (function(response) { 
      alert(JSON.stringify(response)); 
     }); 

누구든지 나를 도울 수 있다면, 고맙겠습니다!

덕분에, 브루스

+0

지금까지 해봤 사용 rootScope 적용 B, 범위, 적용 및 범위 시계와 함께 약속 반환 내부 변수를 사용하고, 짧은 시간에 리디렉션 작업을 수행합니다. 나는 또한 window.navigation.href를 사용하여 시도했지만, 나는 아무것도 얻지 못한다. 성공적으로 로그인 한 후 사용자를 리디렉션 할 수있는 방법이 있어야합니다. – jaxmeier

답변

0

이 문제가 함수 호출을 실행 내 app.js에 실제로 있었다 나타납니다. 위치 변경시 전역 변수를보고 사용자 이름이 아직 설정되어 있는지 확인하고 그렇지 않은 경우 호출을 가로 채서 클라이언트를 로그인 페이지로 보냅니다. 일단 OnLocationChange 핸들러 내에서 내 코드를 이동하여 변수를 보면 올바르게 리디렉션되었습니다.

감사합니다,

1

귀하의 then 핸들러는 약속은 다음 조건에 대해 해결을 잠잠 될 수 있도록 뭔가를 반환해야합니다.

then 처리기 끝 부분에 return response을 추가하기 만하면됩니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 방금 시도했지만 리디렉션이 없습니다. – jaxmeier

+0

'window.location.href = "/ tab/locations"'를 사용하면 제대로 동작합니까? – Alp

7

$ rootScope를 사용해보십시오. $ apply(); $의 location.path() 후

또는

$scope.$apply(function() { 
    $location.path("/tab/locations"); 
}); 

또한 $ location.url를 사용할 수는()

+0

안녕하세요 Abhishek 답장을 보내 주셔서 감사합니다. 불운하게 나는 운이없는 두 가지 방법을 시도했다. – jaxmeier

+1

이것은 나를 위해 일했습니다. 감사! –

+0

나를 위해 일했습니다. 감사! –

관련 문제