2011-12-09 3 views
1

다른 많은 사용자와 마찬가지로 'el'및 이벤트에 문제가 있습니다. 필자의 상황에서는 기본 엘 (just '') 태그 이름을 사용하여 el을 선택기로 설정하고 jQuery 선택기를 사용하고 DOM을 준비하는 등 여러 가지 솔루션을 테스트했습니다. 이러한 솔루션 각각은 이벤트 바인딩에 실패했으며 html 생성시 기본 el 및 tagName이 실패했습니다. 관련 코드 보기 (다른보기에서 추출)보기백본 동적으로 생성 된 'el'바인딩되지 않은 이벤트

view = new Aggregator.Views.Streams.StreamView({model: stream}) 
    console.log view.el 
    $(@el).append view.render().el 

를 호출

$ -> 
    class Aggregator.Views.Streams.StreamView extends Backbone.View 
     template:JST["backbone/templates/stream"] 
     el: $('.item') 
     events: 
     "click div" : "testing" 
     initialize: (model)-> 
     console.log @el 
     _.bindAll this , 'render' 
     @model.bind 'change', @render 
     @model.view = @ 
     @render() 
     @delegateEvents() 
     render: -> 
     $(@el).html "test" 
     console.log @el 
     @ 
     testing: -> 
     alert "EVENT" 
     #@model.clear() 

기능 나는 조금 혼란 스러워요, 나는 엘을 설정하지만 생성하지 않거나 그것은 아무튼 이벤트를 바인드하지 않습니다. 나는 DOM이 생성자에 엘을로드하고 전달하는 것을 기다리지 만 성공하지 못했습니다. 내 가장 확실한 실수에 대한 도움을 주시면 감사하겠습니다.

답변

6

내가 이벤트 해시

events: { 
    "click div" : "testing" 
} 

을 인식 생각하지만 난, 커피 스크립트 편안 아니에요 그리고 난 당신의 일반 뷰 요소에 클릭이 테스트 기능을 결합하려고 내기 죄송합니다? 문제가 있습니다.

는 클릭 이벤트가 실제로 무엇을 (선택 현명한)입니다 :

$('div', viewElement).click(fn); 

의미, 당신은 당신의 뷰 요소 내부의 viewElement의 DIV하지만 DIV 년대를 대상으로하지 않습니다.

는 일반보기 요소 자체에 결합 할 경우

는 는 귀하의 경우

선택기없이 이벤트를 정의 작동

events: { 
    "click" : "testing" 
} 
+0

을! 나는 "클릭"이 뷰 요소가 아닌 문서에 상대적이라고 가정했다. 설명 해줘서 고마워. –

+1

잘 가정이 잘못되면 이벤트 해시는 항상보기 요소 내에서 범위가 지정되므로 아무 것도 클릭하지 않으면 엘 자체에 바인딩되고 뒤에있는 항목을 클릭하면 엘 내부를 검색하게됩니다. – Sander

관련 문제