2013-02-11 5 views
2

이 내 커피 스크립트 라우터 클래스 난 내 로컬 호스트 페이지를 다시로드 할 때 ...Backbone.Router 경로 변경 이벤트 트리거 두 번

이 내 불을 지르고 출력입니다 : 당신은 "경로 변경"에서 볼 수 있듯이 출력이 내 집 노선 후에

App.init 
Session.init 
Router.init 
home routed 
route changed 
route changed 

배치됩니다 ...

그리고 마지막으로이 내 부트 스트랩 코드는 내가 이것은 Backbone source에서 살펴 본다 설명 할 수있다

App = 
    init: -> 
    console.log 'App.init' 
    @session = new App.Model.Session 
    @router = new App.Router 
    # @userPanel = new App.View.UserPanel 
    Backbone.history.start pushState: true 

    Model: {} 
    View: {} 

답변

5

all 이벤트 특별 이벤트 리스너 SYNT입니다 캡처하는 도끼 모든 이벤트는 원본 개체에 의해 트리거됩니다. 나는 다른 이벤트가 실제로는 route 이벤트가 아니라고 추측하지만, route:name 이벤트입니다.

는 대신 route 이벤트를 사용하여, 모든 경로를 잡으려고 :

@on 'route', -> 
    console.info 'route changed' 
+0

좋아, 감사합니다! 문제가 해결, 나는 여전히 자바 스크립트 이벤트 방식 T_T에서 생각하는 문제가 있습니다. 그건 그렇고, 왜 홈 루트가 내 onRoute 콜백보다 먼저 트리거 되는가? – cl0udw4lk3r

+0

@ cl0udw4lk3r, 바로 백본 구현 방법입니다. 'routes' 해시에 등록 된 경로 콜백은 모든 이벤트 핸들러보다 먼저 호출됩니다. – jevakallio

+0

오, 확인해 주셔서 감사합니다! – cl0udw4lk3r

2

history.start 배치, (내 앱 네임 스페이스 ...에)입니다 :

this.trigger.apply(this, ['route:' + name].concat(args)); 
this.trigger('route', name, args); 

것은 단지 '경로'이벤트를 수신 해보십시오 :

@on 'route'