2017-11-20 3 views
0

동적으로 이벤트를 추가하려고하는데 이벤트가 실행되지 않습니다. jQuery를 사용할 수 없습니다.페이지로드가 작동하지 않아 동적으로 백본 이벤트 추가

백본 코드

var OptimizelyTeacherClick = Backbone.View.extend({ 

events: { 
    "click button.start-class-creation" : "optimizelyEvent" 
}, 

optimizelyEvent: function(e){ 
    e.preventDefault(); 
    console.log('Optimizely Event'); 
    alert('Optimizely Event'); 
    } 

}); 

var optimizelyTeacherClick = new OptimizelyTeacherClick({ el: $('.start-class-creation') }).render(); 

HTML

<form class="start-class-creation-form" action="http://site.dev/classes/online/new?type=online&amp;via=teach&amp;button=page_top" method="post"> 
<input value="My Class" name="title" class="initialized" type="hidden"> 
<button type="submit" class="btn submit-btn large primary start-class-creation">Get Started</button> 
</form> 

답변

0

OptimizelyTeacherClick보기의 root el element 버튼 자체입니다. 따라서 이벤트 키 문자열은 click이어야합니다. 이벤트는 el에 바인딩됩니다.

var OptimizelyTeacherClick = Backbone.View.extend({ 

    events: { 
     "click": "optimizelyEvent" 
    }, 

    optimizelyEvent: function(e) { 
     e.preventDefault(); 
     console.log('Optimizely Event'); 
    } 
}); 

또한 단지 선택 문자열 뷰의 인스턴스 수, 백본 jQuery를 함께 가져옵니다. 말했다되고 그건


var optimizelyTeacherClick = new OptimizelyTeacherClick({ 
    el: '.start-class-creation' 
}).render(); 

,이 디자인 올바른 방향으로가는 것 같은 느낌하지 않습니다,하지만 난 더 도움이 프로젝트에 충분한 모른다.