2014-10-03 2 views
10

나는 AngularJSui-router 그리고 내 을 사용 중입니다.AngularJS ui-router 그렇지 않으면 URL 대신 표시 하시겠습니까?

.state('404', 
     { 
      views: { 
       'body': { 
        templateUrl: 'partials/404.html', 
       } 
      } 
     }); 

은 일반적으로 그냥 할 것 :

$urlRouterProvider.otherwise('/'); 

그러나 내가 대신상태에 URL하지만 에 사용자를 보내지 않으 : 나는 다음과 같은 라인을 가지고 이 :

$state.go('404'); 

어떻게 다른 방법으로이 작업을 수행 할 수 있습니까?

참고 : 404 상태에는 URL이 없으므로 기본적으로 사용자가 입력했거나 방문한 URL을 그대로 유지하고 템플릿 만 변경합니다.

답변

24

난 당신이 코드

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.invoke(['$state', function($state) { 
    $state.go('404'); 
    }]); 
}); 
+0

그래, 이걸 처리하는 멋진 방법이 될 것 같습니다 :) – Cameron

3

을 시도하는 것이 달성 생각합니다. @ kdlcruz의 대답에

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.get('$state').go('404'); 
}); 
1

그냥 작은 개선 :

$urlRouterProvider.otherwise(function($injector){ 
    $injector.invoke(['$state', function($state) { 
     $state.go('404', {}, { location: false }); 
    }]); 
}); 

그 일을함으로써, 당신은 여전히 ​​수 잘못된 URL을 유지하고 전용 상태가 변경됩니다.

관련 문제