2013-06-03 6 views
1

$ http 요청 내에서 전역 변수를 업데이트하고 새 페이지로 리디렉션 한 다음 해당 변수를 인쇄하려고합니다 (오류시). 나는 정확하게 이것을하고 있는지 잘 모르겠지만, 내 변수 ($rootscope.adHocLevel2)를 인쇄하려고 할 때 그것은 비어있다. HTML에서

$scope.searchStep2 = function(option) { 
    $http.post($scope.url, { "option" : option}). 
    success(function(data, status) { 
     $scope.status = status; 
     $scope.data = data; 
     $rootScope.response = data; 
     }) 
    . 
    error(function(data, status) { 
     $scope.data = data || "Request failed"; 
     $scope.status = status; 
     $rootScope.response = 'Request failed'; 
     $rootScope.routeAd = {"route": "../adHoc/adhoc.html"};    
     $rootScope.addHocLevel2 = {"suggestedCategory": "Car","suggestedLocLabel": "world","suggestedShadowURL": "http://www.toyota.com/auris/hybrid"}; 
     $window.location=$rootScope.routeAd.route;    
}); 
}; 

내가 위의 코드를 바탕으로 앞서

+0

plnkr 예제를 제공해 주시겠습니까? –

+0

@ user2273266 http://plnkr.co/edit/kDSAuqroSJ0Zd94JHtuY?p=preview – Gidon

답변

3

<input type="text" ng-model="optLocation" value={{addHocLevel2}} /> 

감사를 인쇄하기 위해 노력하고있어 에서 JS 파일, 당신은 $에서는 window.location = $ rootScope.routeAd 있습니다. 경로는 "../adHoc/adhoc.html"을 가리 킵니다. 이것은 응용 프로그램을 다시로드하므로 addHocLevel2 값을 잃게됩니다.

../adHoc/adhoc.html이 아닌 routeProvider.when ("/ adhoc") 구성에 따라 해시 경로 (예 : #/adhoc)로 리디렉션해야합니다.

또한 각도의 한 페이지 응용 프로그램 내에서 이동할 때 가장 좋은 방법은 $ location.path (yourRoutePath) 대신 $ window.location을 사용하는 것입니다. 위치를 완전히 바꾸지 않는 한 (어딘가에 새 URL을).

는 예를 들어

당신이이 개 노선들은 설정 :

app.controller('MainCtrl',function($rootScope,$scope,$location,$http){ 
    $http.post(...).error(function(data,status){ 
     $rootScope.addHocLevel2 = {...}; 
     $location.path("/adhoc"); // this will 'redirect' you to adHoc/adhoc.html page 
    } 
}) 

업데이트 :

app.config(function($routeProvider){ 
    $routeProvider 
     .when('/main', { templateUrl:'/main/main.html',controller:'MainCtrl'}) 
     .when('/adhoc', { templateUrl: '/adHoc/adhoc.html',controller:'AdHocCtrl}); 
} 

는 그런 다음 주 /에서/애드혹로 리디렉션하고 싶은 말은,이 같은 간다 : 나는 당신의 플 런커를 업데이트했다 : http://embed.plnkr.co/01lfzd4Q4bFoSPAB4WIF/ 이것이 내가하는 방법이다 - 나는 또 다른 접근 방법이 있다고 확신한다. 템플릿으로 index.html을 사용하고 main.html과 adhoc.html을 URL을 기준으로 전환 할 수있는 다른 두 페이지로 사용합니다.

+0

답해 주셔서 감사합니다. 그러나 나는 $ rootScope.routeAd = { "route": "../adHoc/#adhoc.html"} 경로를 변경했습니다. 오류가 발생했습니다. 올바른 구문입니까? – Gidon

+0

routerProvider 설정을 제공해 주시겠습니까? 나는 더 많은 설명으로 위를 갱신했다. routerProvider에 설정된 'routerProvider.when()'에 따라 $ location.path ("adhoc") 또는 $ location.path ("adhoc.html")를 사용해보십시오. – maethorr