2013-08-22 2 views
1

우리는 스 플랫 경로와 함께 경로 매개 변수를 사용하려고합니다. 이 시나리오입니다.매개 변수, 스 플랫 경로 및 자식 라우터 결합

탐색 메뉴가 있으며 옵션 중 하나의 일부로 마법사가 있습니다. 마법사로 가면 작업중인 객체의 식별자를 전달하려고합니다. 마찬가지로 위저드에는 단계가 있으며 하위 단계 라우터에서 해당 단계를 처리하고 단계를 경로 (* 세부 정보)의 일부로 전달합니다.

는 플랫 경로는 다음과 같습니다

{ route: 'offer/:offerId/*details', moduleId: 'offerbuilder/index', title: 'Offer Builder' } 

아이들 경로는 다음과 같이 :

우리는 적절하게 경로를 해결하기 위해 라우터와 자식 라우터를 가지고
[ 
    { route: 'parameters', moduleId: 'parameters', title: 'Parameters', nav: true }, 
    { route: 'cart', moduleId: 'cart', title: 'Cart', nav: true }, 
    { route: 'workspaces', moduleId: 'workspaces', title: 'Workspaces', nav: true } 
] 

하지만 문제 우리는 자식 라우트의 해시가 전달 된 매개 변수 값을 대체하지 않지만 원래 패턴을 사용한다는 점을 알고 있습니다. 플랫 경로 매개 변수의 포함을 지원 할,

http://oursite/main/#offer/:offerId/parameters 

내 질문은 :

http://oursite/main/#offer/123456789/parameters 

하지만 해시가 마법사 단계의 일부로서 생성은 다음과 같습니다 즉,이 일을? 그렇지 않은 경우 제안 된 해결 방법은 무엇입니까?

답변

4

현재이 문제는 하위 라우터의 경우 discussed here입니다.

해결 방법은 parentId를 가져 와서 하위 라우터의 해시를 수동으로 구성하는 것입니다.

var childRouter = router.createChildRouter() 
    .makeRelative({ 
     moduleId: 'employees/doctors', 
     route: 'doctors/:id', 
    }); 

return { 
    router: childRouter, 
    activate: function() { 
     var doctorID = router.activeInstruction().params; 

     childRouter.map([ 
     { route: '', moduleId: 'patients/index', hash: '#employees/doctors' + doctorID(), nav: true }, 
     { route: 'schedule', moduleId: 'schedule/index', hash: '#employees/doctors/' + doctorID() + '/schedule', nav: true } 
     ]).buildNavigationModel(); 
    } 
};