2014-10-16 4 views
0

백본 라우팅을 사용하면 다른 페이지로 라우팅 할 수 있습니다.백본 라우팅에서 다른 기능을 사용하는 대신 switch 문 사용

var Workspace = Backbone.Router.extend({ 

    routes: { 
    "help":     "help", // #help 
    "search/:query":  "search", // #search/kiwis 
    "search/:query/p:page": "search" // #search/kiwis/p7 
}, 

help: function() { 
    ... 
}, 
search: function(query, page) { 
    ... 
} 

}); 

내 질문 대신 모든 경로에 대해 하나의 함수를 작성하고 정확한 경로를 결정하기 위해 switch 문을 사용하지 왜 다른 경로에 대해 서로 다른 기능을 작성하고 경로에 따라 작업을 수행하는 것입니다.

다음과 같이 보일 것입니다.

var Workspace = Backbone.Router.extend({ 

routes: { 
"help":     "main", // #help 
"search/:query":  "main", // #search/kiwis 
"search/:query/p:page": "main" // #search/kiwis/p7 
}, 

main: function() { 
... 
switch(){ 

case("help") : ...; 
case("search") : ...; 
} 
} 

}); 

정확한 구현을 알지 못합니다. 나는 방금 간단한 생각을했다. 백본 라우팅에서 이것이 가능합니까?

+0

다른 기능 fr을 가지지 않고 하나의 큰 기능을 갖고 싶다면 – Yasser

+0

내 요구 사항에 따라 다른 기능이 필요하지 않습니다. 한 가지 기능으로 충분합니다. – Amr

+0

그러면 경로를 만들고 단일 방법을 사용하는 것은 의미가 없습니다. – Yasser

답변

0

3 개 이상의 경로/기능이있는 즉시 악몽이 될 수도 있고, 각 경로에 대한 데이터 및보기 설정에 2 개 이상의 행이 필요하기 때문입니다.

또한 하나의 기능 만 호출 할 수 있다면 경로 처리기를 테스트하는 것이 훨씬 쉽습니다.

요구 사항에 따라 하나의 기능이 필요한 경우 경로 정의가 잘못되었습니다. 나는 당신이 검색 기능과 검색 결과의 페이지 매김으로 단일 페이지를 모델링한다고 가정합니다. 의 해당 페이지는 "yourapp/# 페이지"와 같은 URL로 accesed되어 가정하자 :

는 선택적 매개 변수 내 친구를 입력 : :) http://backbonejs.org/#Router-routes

var Workspace = Backbone.Router.extend({ 
    routes: { 
    "page(/search/:query)(/:page)": "main" 
    }, 
    main: function(query, page) { 
    if(query) { 
     //you're searching 
     if(page) { 
     //display specific page 
     } 
     else { 
     //show first results page 
     } 
    } 
    else { 
     //show you initial views/models 
    } 
    } 
}); 

그 경로를 처리 할 : 페이지, 페이지/검색/사과 및 페이지/검색/사과/4

+0

응용 프로그램을 실행하려고하면 { '', 'settings': 'main' }이 경로와 같은 경로를 정의하려고 시도합니다. "예기치 않은 토큰"오류가 발생했습니다. – Amr