http://jsfiddle.net/sbel/3KAhC/
在这个小提琴代码中,即使调用了stopListening方法,on方法仍然有效,输出可以看到。我做错了什么?
JavaScript的:
// Define View
var SomeView = Backbone.View.extend({
initialize: function () {
// Listen to the model
this.model.on('change', this.render, this);
},
render: function () {
$("#message").append("<br>render called");
},
close: function () {
this.stopListening();
}
});
var SomeModel = Backbone.Model.extend({});
var someModel = new SomeModel({
name: 'Foo'
});
var someView = new SomeView({
model: someModel
});
someModel.set('name', 'Bar');
someView.close();
someView = null;
someModel.set('name', 'Zoo');
答案 0 :(得分:1)
使用this.listenTo(this.model, 'change', this.render)
代替this.model.on('change', this.render, this)
:
listenTo object.listenTo(其他,事件,回调)
告诉对象 在另一个对象上听一个特定的事件。的优点 使用此表单,而不是other.on(event, callback)
listenTo
允许对象跟踪事件,他们可以 稍后将被删除。