2016-06-10 2 views
4

설명서에 따라 angularjs ui-router url 매개 변수는 기본적으로 선택 사항입니다. 필수 매개 변수를 만드는 방법이 있습니까? 매개 변수가 누락되었거나 null 인 경우처럼 페이지로 진행하지 않겠습니까?AngularJS ui 라우터 필수 매개 변수

희망을 보내 주시면 감사하겠습니다. 경로 PARAMS가없는 경우

감사

+0

왜 '경우 (대해서 typeof PARAM ==='정의되지 않은 ') 다음 리디렉션? 템플릿에 – user3791775

+0

또는 그 이전에 링크가 표시되지 않았습니까? – user3791775

+0

내 견해가 이미 아닙니다. 또한 내 컨트롤러에서 할 수 없다. 상태를 선언하는 동안 그것을 할 수있는 방법이 있습니까? – Jed

답변

5

사용 UI 라우터 resolve 확인합니다. 주석이 경우 코드도 축소 된 경우 실패합니다 해결

//Example of a single route 
.state('dashboard', { 
    url: '/dashboard/:userId', 
    templateUrl: 'dashboard.html', 
    controller: 'DashboardController', 
    resolve: function($stateParams, $location){ 

    //Check if url parameter is missing. 
    if ($stateParams.userId === undefined) { 
     //Do something such as navigating to a different page. 
     $location.path('/somewhere/else'); 
    } 
    } 
}) 
+0

스크립트가 축소 될 때 작동하지 않습니다. 너는 어떤 생각을 가지고 있니? – Jed

+0

좋지 않습니다. 사과. resolve 함수를 래핑하여 []를 제거하십시오. – Gregg

+1

나중에 참조 할 수 있도록 []를 제거하는 대신 AngularJS가 원하는대로했습니다 : '해결 : [ '$ stateParams', '$ location', function ($ stateParams, $ location) { // body here }]' – Jed

2

대답 위 prasents 잘못된 사용. Look at this issue u [email protected]가 해결해야 할 객체를 알려주지 않기 때문에 많은 시간을 디버깅하는데 보냈습니다. 당신이 축약 필요한 경우

resolve: { 
    somekey: function($stateParams, $location){ 

     //Check if url parameter is missing. 
     if ($stateParams.userId === undefined) { 
      //Do something such as navigating to a different page. 
      $location.path('/somewhere/else'); 
    } 
} 

, ngAnnotate

+0

끝 괄호가 없습니다. – sfs