2014-04-02 3 views
2

내 뷰를 렌더링 할 때 렌더 이벤트를 트리거하고 싶습니다."한정자"로 백본 이벤트를 트리거하는 방법

function Renderer() { 
    _.extend(this, Backbone.Events); 
}; 

Renderer.prototype.render = function(view, model) { 
    this.trigger('render:before'); 

    // Do some checks to see how 
    // we should render the view 
    // and then call render 

    this.trigger('render:after'); 
}; 

var renderer = new Renderer(); 

이제 이벤트를 Renderer에 등록 할 수 있지만 전체 이름을 사용해야합니다. 나는.

renderer.on('render:before', function() { console.log("before rendering"); }); 
renderer.on('render:after', function() { console.log("after rendering"); }); 
renderer.on('all', function() { console.log("All events from renderer"); }); 

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

renderer.on('render', function() { console.log("Any rendering events"); }); 

내가 마지막 하나는 렌더러 all 이벤트에 등록에 해당 될 것으로 예상.

render을 청취하는 방법은 render:beforerender:after 모두를 청취하는 것과 동일합니까? 콜론을 사용하여

+0

이것은 http://stackoverflow.com/q/20163043/479863과 동일한 것입니까? –

+0

@muistooshort 그것은 그 반대의 일종입니다. 나는 '렌더'에 등록 할 때 모든 이벤트를받지 못했습니다. 그 질문은 "한정어"로 등록 된 모든 청취자를 촉발시키는 것 같습니다. –

답변

3

의 네임 이벤트 이름은 just a convention입니다 : "설문 조사 : 시작"당신이 한 페이지에 다른 이벤트가 많은 경우

에서, 협약을 네임 스페이스에 콜론을 사용하는 것입니다 또는 "change : selection"입니다.

var events = this._events[name]; 
... 
if (events) triggerEvents(events, args); 

할 수 있습니다 :

source code of Events.trigger

호출 할 수있는 이벤트 핸들러는 독립적으로 콜론 여부가 포함되어 있는지 여부의 이벤트의 전체 이름으로 검색되는 것을 보여줍니다

  • 'all' 이벤트를 정의하고 트리거하려면 trigger을 공백으로 호출하여
  • 개의 트리거 이벤트 처리기를 트리거하십시오. - 이벤트 이름 목록 또는
  • 이 기능을 추가하려면 backbone.js의 Events.trigger 소스 코드를 수정하십시오.
관련 문제