1

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');
4

1 回答 1

1

使用this.listenTo(this.model, 'change', this.render)代替this.model.on('change', this.render, this)

listenTo object.listenTo(other, event, callback)
告诉一个对象监听另一个对象上的特定事件。使用这种形式而不是 的优点other.on(event, callback)listenTo允许对象跟踪事件,并且可以在以后一次将它们全部删除。

还有一个更新的小提琴http://jsfiddle.net/nikoshr/3KAhC/1/

于 2013-10-03T14:59:14.760 回答