2016-07-09 1 views
1

내 애플리케이션의 진입 점인 상태가 있습니다. 그러나 항목 페이지에는 목록을 표시하기 위해 날짜 매개 변수가 필요합니다. URL에 날짜가 제공되지 않은 경우 현재 날짜를 사용하도록 구성됩니다.ui-router : URL에 표시되지 않는 param의 기본값

기술적으로 모든 것이 작동합니다. 기본값은 컨트롤러로 전달되고 컨트롤러는 일부 데이터를로드하는 데이 컨트롤러를 사용할 수 있지만 URL에 날짜를 표시하지는 않습니다.

이 상태의 구성은 다음과 같습니다

$stateProvider.state('openJobs', { 
     controller: 'openJobsCtrl as openJobs', 
     params: { 
     shippingDate: { 
      value: getFormattedCurrentDate(), 
      squash: false 
     } 
     }, 
     templateUrl: 'openJobs.html', 
     url: '/openJobs/:shippingDate' 
    }); 

나는 (URL 변경을보고 새 창에서 실행) 동작을 보여주기 위해 작업 plunkr을 만들었습니다. openJobsui-sref 링크가 생성되면 URL에 기본값이 표시됩니다. 그러나 누군가가 http://host.com/openJobs/을 입력하여 직접 페이지를 열면 기본값이 백그라운드에서 사용되지만 URL에는 표시되지 않습니다.

상태를 어떻게 열어도 URL에 기본값이 표시됩니다.

답변

3

기본 경로가 추가 된 urlRouterProvider을 사용하여 들어오는 경로를 리디렉션 할 수 있습니다. urlRouterProvider은 브라우저 위치를 업데이트합니다. 이 상태 (또는 ui-sref$state.go() 통해) 상태 이름에 대해 일치하면

$urlRouterProvider.when("/openJobs/", function() { 
     return "/openJobs/" + getFormattedCurrentDate(); 
    }); 

은 브라우저 url 위치로 업데이트한다.

반면에 상태가 url 경로와 일치하면 브라우저 위치는 이미 url과 일치하므로 업데이트되지 않습니다. 따라서 귀하의 경우에는 $urlRouterProvider을 사용하여 날짜를 추가해야합니다.

+0

감사합니다. 잘 처리되었습니다. – Ahatius

관련 문제