我有一个附加到视图的click事件,并且使用className和tagName定义该视图的el。渲染此视图后,不会为className选择器触发click事件。
以下是我的观点 -
define([
'jquery',
'underscore',
'backbone',
'models/MovieModel',
'text!templates/movieTemplate.html'
],function($,_,Backbone,Moviemodel,movieTemplate){
var Moviesview= Backbone.View.extend({
tagName:'div',
className:'box',
events : {
'click .box': 'boxClicked'
},
boxClicked: function(){
alert('world');
},
initialize: function(){
},
render: function(){
var data= {moviemodel: this.model.toJSON(), _:_ };
var compiledTemplate =_.template(movieTemplate);
compiledTemplate= compiledTemplate(data);
this.$el.html(compiledTemplate);
return this;
}
});
return Moviesview;
});
此视图将从另一个视图调用 -
define([
'jquery',
'underscore',
'backbone',
'models/MovieModel',
'views/movieview',
'views/detailedmovieview'
], function ($, _, Backbone, Moviemodel, Movieview, Detailedmovieview) {
var Movieslistview = Backbone.View.extend({
el: $('.content'),
initialize: function () {
var that = this;
this.collection.fetch({
success: function (collection, response) {
that.render();
},
error: function () {
alert('failed!');
}
});
},
render: function () {
this.collection.each(function (row) {
var temp = new Movieview({
model: row
});
this.$el.append(temp.render().el);
}, this);
return this;
}
});
return Movieslistview;
});
此处使用的模板 -
<div class='main-content'>
<div class="actors">
<div class="actors-label">Actors:</div>
<div class="actors-name"><%= moviemodel.actor_1_name %></div>
</div>
<div class="additional-info">
</div>
</div>
.main-content 和 .additional-info 的点击事件正在触发,但不适用于 .box 。