2012-11-15 5 views
1

Backbone.js를 사용하고 있으며 라우터가 있습니다.백본 라우터 기능으로 경로 추가

"mypath/*subroute": function(subroute) { 
    //do somethong 
} 

:

routes: { 
    "pagea": "pageafunc", 
    "pageb": "pagebfunc", 
    "pagec": "pagecfunc", 
} 

은 다음과 같습니다 경로를 추가 할 수 있습니다 :이 내 경로 라우터의 속성입니다?

답변

2

아니요, routes 개체는 문자열 값만 가질 수 있습니다.

자신의 콜백을 전달하려면 프로그래밍 방식으로 경로를 설정해야합니다. 예를 들어, 라우터의 초기화 함수에서, 당신은이 작업을 수행 할 수 있습니다

이 빠르게 매우 읽을 얻을 수 있고, 당신이 경로를 모두 알고 당신의 초기화 함수를 통해 스캔해야 함을 의미했다
this.route('mypath/*subroute', 'mypath_subroute', function(){ 
    // Route callback stuff. 
}); 

당신 정의 했으므로 routes 객체에있는 모든 경로를 저장하는 것이 훨씬 깔끔합니다. 또는 최소한 라우터 자체에 라우트 기능 본문을 유지하고 가독성을 위해 별도의 섹션에 라우트 경로를 유지하십시오.

+0

고마워요! 나는 동적으로 경로를 생성하기 위해 이것을 필요로한다. 그래서 처음에는 routes 속성처럼 읽을 수 없다. – Naor

+0

의미가 있습니다. 다행히 도울 수 있습니다 : D – loganfsmyth

+0

동적으로 경로를 만들 때 사용하기 때문에 각 경로마다 다른 이름을 어떻게 얻을 수 있습니까? – Naor

0

허용되는 대답이 잘못되었거나 구형 일 수 있습니다. 두 경우 모두, Backbone docs 공식 당 :

라우트 해시지도의 URL을 ... 라우터 에 기능 (하거나 직접 함수 정의, 당신은 선호하는 경우)

화살 나무의 일종을 !

var 
Router= Backbone.router.extend({ 
    routes:{ 
    "path/to/:view": function(view){ console.log(view); } 
    } 
    }); 

그것은 예를 들어, 초기 인스턴스화하기 전에 {routes} 개체를 수정 또는 somesuch 확장 할 수 있습니다, 경우에 편리한 속기이다 : 그것은 당신이 뭔가를 할 수 있어야 의미합니다. 그러나 익명 콜백을 사용하면 네임 스페이스로 지정된 이벤트가 해당 경로를 트리거하지 못하게됩니다. (위의 @loganfsmyth's comment을 참조하십시오.) 그래도 이것은 유스 케이스에 따라 최악의 트레이드 오프가 아닐 수도 있습니다.