读书人

backbone 2个model,2个view的事件触发

发布时间: 2014-01-17 15:01:00 作者: rapoo

backbone 2个model,2个view的事件触发问题?
本帖最后由 WDYDXF 于 2014-01-14 11:00:21 编辑 假设页面有一个View,有一个Model,实例化modelA,设置为viewA的model.
实例化modelB,设置为viewB的model.
View监听一个自己元素的click事件,现在触发这个click事件后,这个click被执行了2次.
具体见代码:

 var CustomView = Backbone.View.extend({
el: $('body'),
events: {
"click .btnClick": "onClick"
},
initialize: function () {
this.render();
},
render: function () {
this.$el.append("<div class='btnClick' style='background-color:red; width:100px;height:100px'></div>");
},
onClick: function () {
console.log('onClick');
}
});

var CustomModel = Backbone.Model.extend({
defaults: {
name: 'test'
}
});

var modelA = new CustomModel();
var modelB = new CustomModel();

var viewA = new CustomView({ model: modelA });
var viewB = new CustomView({ model: modelB });




现在点击某一个div,可以在控制台中看到输出了2次"onClick",这是为什么?
现在希望点击哪个div,执行哪个div的onClick事件,应该怎么做呢?
请指导一下,谢谢
[解决办法]
因为你为body下的.btnClick元素绑定了2次onClick事件。jQuery里绑定几次就执行几次,所以你的回调执行了2次。
[解决办法]
啊,第二个发错了
var CustomView = Backbone.View.extend({
el: $('body'),
events: function(){
var key = 'click #'+this.cid;
var obj={};
obj[key]='onClick';
return obj;
},
initialize: function () {
this.render();
},
render: function () {
this.$el.append("<div class='btnClick' id='" +this.cid +"' style='background-color:red; width:100px;height:100px'></div>");
},
onClick: function () {
console.log(this.cid+'onClick');
}
});

var CustomModel = Backbone.Model.extend({
defaults: {
name: 'test'
}
});

var modelA = new CustomModel();
var modelB = new CustomModel();

var viewA = new CustomView({ model: modelA });


var viewB = new CustomView({ model: modelB });


读书人网 >JavaScript

热点推荐