View.stopListening()不起作用

时间:2013-10-03 14:34:26

标签: backbone.js

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

1 个答案:

答案 0 :(得分:1)

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

  

listenTo object.listenTo(其他,事件,回调)
  告诉对象   在另一个对象上听一个特定的事件。的优点   使用此表单,而不是other.on(event, callback)   listenTo允许对象跟踪事件,他们可以   稍后将被删除。

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