Предположим, у меня есть модель и представление, у ths view есть два метода: один связывает событие mousemove документа, а другой - метод unbind, 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, что проблема с моей проблемой, как я могу решить эту проблему
у меня изменить имя метода, то первая проблема у тя nged.But еще одна проблема: метод viewOff не работает, он не может отменить событие mousemove документа, как я могу это решить? Используйте console.log, я вижу, что метод вызывается, но просто не может отменить привязку – hh54188
@ hh54188: Переименование 'change' отлично работает: http://jsfiddle.net/ambiguous/b7rUT/ У вас все еще есть странная структура приложений, но она работает. –