我的视图处理它的事件时遇到了一些问题。他们根本不开火。 该视图具有来自模板的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;
}
});
视图完全呈现在屏幕上,它的工作原理就像它应该的那样。 但是click事件没有触发。
当我检查幻灯片视图对象时,我可以看到它确实包含了包含正确HTML的el对象,包括必须触发单击事件的按钮。
当我记录视图的事件时,我看到它们被设置了:
Object
click #start-btn: "clickHandler"
__proto__: Object
答案 0 :(得分:0)
window.AppView = Backbone.View.extend({
render: function() {
this.slide = new window.IntroSlideView({ el: this.$(".slide") });
// ...
}
});