2017-11-13 2 views
1

약 5 $ http .get 및. post 메소드의 응답을 컨트롤러에서 다른 컨트롤러로 전달합니다. 나는 그 응답을 전달하기 위해 방송을 사용할 계획이었다. 그러나 state.go가 더 나은 경로 일 수 있습니다. (말장난 의도 없음 :). 이미 몇 가지 상태가 정의되어 있습니다. 매개 변수를 전달하기위한 다른 비 URL 전환 상태를 추가해야합니까? 감사

답변

2

난 당신이

//Example 
$routeProvider 
    .when("/chat", { 
     templateUrl: "msgView.html", 
     controller: "msgController", 
     resolve: { 
      messages: function($http){ 
       //return your $http.get calls data 
     } 
    } 
}); 

//use resolve like this in controller 
app.controller("msgController", function (messages) { 
    $scope.messages = messages; 
}); 

또한이 상태 초록을 만들 수있는 각도 경로에 해결을 사용하거나 최상위 부모 상태에서 또는 바로 위 부모의 해결 작업을 수행해야한다고 말할 것 상태. 이렇게함으로써 UI 라우터

$stateProvider 
    .state('chat', { 
    url: '/chat', 
    templateUrl: 'partials/chat.html', 
    controller: 'msgController as vm', 
    resolve: { 
     messages: function($http){ 
       //return your $http.get calls data 
     } 
    } 
    }); 

를 사용

예 당신은 당신이 당신의 뷰와 컨트롤러를 초기화하기 전에 데이터를 사용할 수 있는지 확인합니다. 데이터가 비어 있거나 부분적이라면 컨트롤러에서 원하는대로 "데이터를 사용할 수 없음"이라는 메시지 또는 원하는대로 처리 할 수 ​​있습니다.

이것은 또한 오류가 다음 사용자가 404 페이지 나 다른 페이지로 리디렉션됩니다 결의 발생하면

$state.defaultErrorHandler((error: any) => { 
       $state.transitionTo("404"); 
      }); 
+0

이 좋은 소리에 지정되도록합니다. 이미 정의 된 경로 중 몇 가지는 get 및 posts에서받은 res.data를 사용합니다. 그래서 해결이 좋은 아이디어입니까? 데이터가 누락되면 새로운 관점을 시작하지 않습니까? 부분 데이터 만 받았고 일부 데이터가 누락되었지만 새 상태를 인스턴스화하고 싶다면 어떻게해야합니까? – uniXVanXcel

+0

ui-router와 달리 ngRoute를 사용하는 것으로 나타났습니다 – uniXVanXcel

+1

@uniXVanXcel 데이터가 누락 된 경우 새보기를 시작하지 않기 위해 "내 응답을 업데이트하고 ui-router와 Yes를 포함했습니다." 문제. – Hey24sheep