에 결합하지 내가 가진 : 다음백본 이벤트 내보기 중 하나에서 DOM 요소
events: {
'click .tab': 'doSomething',
},
:
doSomething: function(){
...
},
이 내 의견에 반복되는 구조이지만, 몇 가지 이유 '해봐요 대한 '기능이이보기에서 클릭에 의해 실행되지 않습니다.
요소가 이벤트에 언제 바인딩됩니까?
디버깅에 대한 유용한 정보가 있습니까?
에 결합하지 내가 가진 : 다음백본 이벤트 내보기 중 하나에서 DOM 요소
events: {
'click .tab': 'doSomething',
},
:
doSomething: function(){
...
},
이 내 의견에 반복되는 구조이지만, 몇 가지 이유 '해봐요 대한 '기능이이보기에서 클릭에 의해 실행되지 않습니다.
요소가 이벤트에 언제 바인딩됩니까?
디버깅에 대한 유용한 정보가 있습니까?
위임은 뷰 생성자 끝의 delegateEvents
메서드에서 발생합니다.
http://documentcloud.github.com/backbone/docs/backbone.html#section-144
this
을 반환하기 전에 render
내부 this.delegateEvents()
를 호출 수동으로 봅니다. 백본이 예상치 못한 방식으로 initialize
또는 render
방법 안에 this.el
으로 퇴장하고 있습니까? 여기 바이올린
링크 : 선택기를 생략 http://jsfiddle.net/7xRak/
이벤트가 뷰의 루트 요소 (this.el
)에 바인딩됩니다. 당신의 class="tab"
인 전망의 DOM 요소가 this.el
는 다음 다음과 같은 이벤트를 바인딩해야
events : {
'click' : 'dosomething'
}
로하고
<div class="tab">
<span class="inner"></span>
</div>
같은 this.el
의 내부 요소에 대한 이벤트를 바인딩해야 의미하는 경우
,
events : {
'click' : 'dosomething'
'click .inner' : 'onInnerClick'
}
위의 내용과 정확히 일치합니다.이 패턴을 잘 알고 있습니다. 제가 말하고자하는 것은 어떤 이유로이 패턴이 작동하지 않는다는 것입니다. 따라서 이벤트 위임을 디버깅하는 몇 가지 방법이 있습니다. – captDaylight
흠, 나는 렌더링에서 반환되기 전에 this.delegateEvents()를 호출 해봤지만 아직 이벤트를 바인딩하지 않습니다. 또한, 나는 이걸로 장난하지 않고 있어요. 초기화 또는 렌더링 내부. 작동 한 유일한 것은 var = this라고 부릅니다. this.do ('. tab'). on ('click', function() {that.doSomething();}); 내부의 초기화,하지만 이것은 나쁜 형태처럼 느껴집니다 ... – captDaylight
$ el 또는 el 중 하나를 엉망이 아니었지만 내 렌더링에 delegateEvents를 추가하면 이벤트 바인딩이 수정되었습니다. – Duke