2016-12-19 9 views
0

RoutersStudentsColleges의 두 가지 리소스가 있습니다.여러 라우터를 초기화하는 방법은 무엇입니까?

class App.Routers.Colleges extends Backbone.Router 
    routes: 
    "index": 'index' 
class App.Routers.Students extends Backbone.Router 
    routes: 
    'index': 'index' 
    'new': 'newStudent' 

어떻게 작동하는지이 두 경로를 초기화 하시겠습니까?

아래 코드와 같이 초기화하려고했지만 작동하지 않습니다.

window.App = 
Models: {} 
Collections: {} 
Views: {} 
Routers: {} 
initialize: -> 
    new App.Routers.Students 
    new App.Routers.Colleges 
    Backbone.history.start() 
$(document).ready -> 
    App.initialize() 

나는 위의 코드를 실행하려고

, 그것은 단지 대학과 학생 DIV 모두 new App.Routers.Colleges 나에게 데이터를 보여주는 것.

답변

1

라우터의 경로가 글로벌 Backbone.history 개체에 추가됩니다. 따라서 동일한 경로가 선행 경로보다 우선합니다. 동일하지 않은 라우트라도 나중에 정의되는 경우 유사하지만보다 특정한 라우트를 대체 할 수 있습니다.

새 라우터를 인스턴스화 할 때 해당 라우터의 생성자는 마지막에서 첫 번째까지의 경로를 구문 분석하여 특정 경로를 먼저 정의해야하고 더 일반적인 경로를 먼저 정의해야하고 모든 포괄 경로로 끝나는 _bindRoutes을 호출합니다.

모든 URL은 고유해야합니다, 그래서 당신은 접두사와 모든 라우터를 네임 스페이스 수 :

class App.Routers.Colleges extends Backbone.Router 
    routes: 
    'colleges': 'index' 
class App.Routers.Students extends Backbone.Router 
    routes: 
    'students/new': 'newStudent' 
    'students': 'index' 

또는 사용 (또는 원하는대로 만들어보세요) 하위 라우터/컨트롤러를 할 수있다.