2012-04-13 5 views
0

현재 일반 페이지가 여러 개있는 route 객체가 있으며 첫 번째 매개 변수가 사용자 이름 인 최상위 경로도 추가하고 싶습니다.Backbone.js 라우터 동적 첫 번째 매개 변수

routes : { 
    '/'  : 'main', 
    '/login' : 'login', 
    '/about' : 'about', 
    '/create' : 'create', 
    '/:username': 'getUser' //something like this 
    '*actions' : 'defaultHandler' 
} 
  1. 내가이 어떻게 달성 할 것인가?
  2. 사용자 이름 경로를 추가하는 것은 좋지 않은데, 페이지 나 사용자가 발견되지 않은 경우에도 작업을 다시 수행 할 수 있습니까?

답변

1

"about"또는 "create"라고 불리는 사용자가있을 때 어떻게됩니까? 당신의 경로를 네임 스페이스와 문제를 방지 :

routes : { 
    '/'   : 'main', 
    '/a/login' : 'login', // "a" for "application" 
    '/a/about' : 'about', 
    '/a/create' : 'create', 
    '/a/*actions': 'defaultHandler', 
    '/:username' : 'getUser' 
} 

그런 다음 당신은 그냥 있는지 아무도 없다 "는"A와 사용자 이름을 확인해야합니다. 또한이 방법은 경로를 더 추가 할 경우 미래의 충돌로부터 사용자를 보호합니다.

1

내가 올바르게 이해한다면 거기에 있습니다. 그냥 getUser 함수의 매개 변수로 username를 추가 : 마지막 두 경로 모두 그냥 아무것도 일치 할 수 있기 때문에

getUser: function(username) { /* do stuff */ } 

는하지만 문제가있다. 사용자를 식별하기 위해 접두어를 사용하여 최종 경로와 일치하는 모든 경로와 사용자 경로를 구별 할 수 있습니다. 이 같은 것이 충분해야합니다 :

routes : { 
    // ... 
    '/users/:username': 'getUser' 
} 
관련 문제