У меня возникли проблемы с обработкой событий в моем представлении. Они просто не стреляют. В представлении есть html из шаблона, который выглядит так:
<script type="text/template" id="intro-slide-template">
<div class="slide intro" id="intro-slide">
<a href="#" class="startpresentation" id="start-btn">
<%= startpresentation %>
</a>
</div>
</script>
Все идет нормально. Сам код представления выглядит так:
/* ********* Slide View ********* */
window.IntroSlideView = Backbone.View.extend({
initialize: function(){
this.template = _.template($("#intro-slide-template").html());
},
render: function(){
$(this.el).html(this.template(this.model.toJSON()));
},
events: {
"click #start-btn": "clickHandler"
},
clickHandler: function() {
console.log("IntroSlideView :: clickHandler");
}
});
Вот как я отображаю слайд в представлении основного приложения:
/* ********* App View ********* */
window.AppView = Backbone.View.extend({
el: $("#content"),
initialize: function(){
_.bindAll(this, 'render');
//render
this.render();
},
render: function(){
this.el.innerHTML = "";
var slide = this.model.get("currentSlide");
slide.render();
this.el.innerHTML = slide.el.innerHTML;
}
});
Представление отлично отображается на экране и работает так, как должно. Но событие клика не срабатывает.
Когда я проверяю объект просмотра слайдов, я вижу, что в нем есть объект el с правильным HTML, включая кнопку, которая должна запускать событие щелчка.
И когда я регистрирую события представления, я вижу, что они установлены:
Object
click #start-btn: "clickHandler"
__proto__: Object