假设我有一个模型和一个视图,这个视图有两个方法:一个是绑定文档 mousemove 事件,另一个是 unbind 方法,默认我给文档 mousemove 事件,一旦模型的enable
值改变我会调用视图的 unbind 方法:
window.ConfigModel = Backbone.Model.extend({
defaults: {
'enable':0
},
initialize: function(){
this.bind("change:enable", function () {
var portView2 = new PortView();
portView2.viewOff();
});
},
change:function () {
this.set('enable', 9);
}
})
window.PortView = Backbone.View.extend({
viewOn: function () {
$(document).on('mousemove', function () {
console.log('move')
})
},
viewOff: function () {
$(document).off('mousemove');
}
})
然后我input
在文档上放了一个调用模型改变的:
$('input').click(function () {
var configModel = new ConfigModel();
configModel.change();
})
启动脚本是:
var portView1 = new PortView();
portView1.viewOn();
问题是一旦我调用点击输入按钮,chrome会告诉我一个错误:Maximum call stack size exceeded
似乎change
被调用了很多次。那么我的问题是什么问题,我该如何解决这个问题