backbone 2个model,2个view的事件触发有关问题
backbone 2个model,2个view的事件触发问题?
假设页面有一个View,有一个Model,实例化modelA,设置为viewA的model.
实例化modelB,设置为viewB的model.
View监听一个自己元素的click事件,现在触发这个click事件后,这个click被执行了2次.
具体见代码:
现在点击某一个div,可以在控制台中看到输出了2次"onClick",这是为什么?
现在希望点击哪个div,执行哪个div的onClick事件,应该怎么做呢?
请指导一下,谢谢
------解决方案--------------------
因为你为body下的.btnClick元素绑定了2次onClick事件。jQuery里绑定几次就执行几次,所以你的回调执行了2次。
------解决方案--------------------
啊,第二个发错了
假设页面有一个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 });