假設我有一個模型和一個視圖,該視圖有兩個方法:一個是綁定文檔mousemove事件,另一個是解除綁定方法,defalut我給文檔mousemove事件,一旦模型enable
值改變,我會調用該視圖的解除綁定方法:Backbone.js:「超出最大調用堆棧大小」錯誤
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();
的問題是,一旦我稱之爲點擊輸入按鈕,鍍鉻會告訴我一個錯誤:Maximum call stack size exceeded
似乎change
被調用許多times.So什麼是我的問題,這個問題,我怎麼能解決這個問題
我必須改變方法名,第一個問題有茶但另一個問題是:viewOff方法不起作用,它不能解除綁定文檔的mousemove事件,我該如何解決這個問題?使用console.log我可以看到該方法已被調用,但不能解除綁定 – hh54188
@ hh54188:重命名'更改'工作正常:http://jsfiddle.net/ambiguous/b7rUT/你仍然有一個奇怪的應用程序結構,但它的工作原理。 –