2014-07-21 3 views
2

에서 URL의 실제 값을 얻기 위해, 내가 좋아하는 경로가 정의한 finderHandler() 에 의해 처리됩니다. 내 finderHandler에 원본 URL 값을 가져 오려고합니다. 이 경우, 그것은 /admin/finder/1234입니다. 어떻게 얻을 수 있습니까?어떻게 말할 수 갈림길

+0

는이 테스트를 읽게을이처럼 다시 작성하는 것은 크로스로드 최종 세그먼트를 캡처하게해야합니까? https://github.com/millermedeiros/crossroads.js/blob/master/dev/tests/spec/signals.spec.js –

답변

0

CrossroadsJS는 실제로 (window.location의 관점에서) URL을 신경 쓰지 않고 액세스 권한을 제공하지 않습니다. crossroads.parse() 메서드는 임의의 문자열을 받아들이고 일치시킵니다. 문자열은 모든 소스, URL 또는 기타에서 온 것일 수 있습니다.

route.interpolate() 기능을 사용하여 문자열을 리버스 엔지니어링 할 수 있습니다. 이 함수는 명명 된 값의 해시를 가져 와서 경로의 일치 패턴에 정의 된 매개 변수에 매핑합니다. 경로의 핸들러 함수는 일치하는 매개 변수를 전달하므로 해시에 전달하므로 원본 문자열을 다시 가져와야합니다.

예는 여러 경로와 일치하지만 마지막 부분은 캡처하지 않습니다.

var myRoute = crossroads.addRoute('/root/finder/:optional:', finderHandler); 

당신은 그들과 같은 핸들러와 문자열 복구 할 수 있어야한다 :

function finderHandler (optionalSegment) { 
    var urlFragment = myRoute.interpolate({optional: optionalSegment}); 
    console.log(urlFragment); 
}