2012-06-25 6 views
1

내가이 작품 이유를 알아 내려고 노력하고 있어요 객체 :백본보기 이벤트에서 사용자 정의 이벤트는

var TestView = Backbone.View.extend({ 
    views: {}, 

    initialize: function(){ 
     this.bind('transistion:complete', this.onPageLoaded); 

    }, 

    onPageLoaded: function(){ 
     alert("works!"); 
    } 
}); 

var v = new TestView(); 
v.trigger('transition:complete'); 

을하지만이 작동하지 않습니다

var TestView = Backbone.View.extend({ 
    views: {}, 

    events:{ 
     'transition:complete': 'onPageLoaded' 
    }, 

    onPageLoaded: function(){ 
     alert("works!"); 
    } 
}); 

var v = new TestView(); 
v.trigger('transition:complete'); 

할 수있는 깔끔한 것 뷰의 이벤트 객체 내에서 내 사용자 정의 이벤트를 트리거합니다. 어쨌든이 일을 할 수 있나요?

답변

8

을 통해 트리거되고 on을 통해 트리거 된 이벤트는 백본의 내부 이벤트 인 반면 events 해시는 DOM 이벤트 (예 : 클릭)로 지정됩니다. 따라서 v.trigger('eventname')으로 이동하면 이벤트는 DOM 이벤트가 아니라 백본에서만 발생합니다.

here

6

백본 이벤트 해시 읽기가보기에이 아닌 DOM에 연결되어 있습니다.

방법보기 요소로 트리거를 실행하는 확인 :

var TestView = Backbone.View.extend({ 

    events:{ 
     'transition:complete': 'onPageLoaded' 
    }, 

    onPageLoaded: function(){ 
     alert("works!"); 
    } 
}); 

var v = new TestView(); 
v.$el.trigger('transition:complete'); 

사용자 정의 이벤트가 요소에 바인드 될 필요하지 않은 경우 그러나, 첫 번째 코드는 괜찮

이 단지에와, 바인딩을 교체 이렇게 :

this.on('transistion:complete', this.onPageLoaded); 
관련 문제