如何在新视图渲染之前关闭所有事件

时间:2015-02-26 16:34:45

标签: javascript backbone.js

我有几个观点。 在其中一些我有类似的事件,如

events: {
    'click #save': 'save'
}

当我创建并渲染新视图时,旧事件监听仍然如此古老,当我已经更改视图时,algorythm仍然有效。

据我所知,有一个stopListening()函数,但我如何激活以前的所有视图。 因此,当我更改视图/页面时,我希望禁用所有先前的事件。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

ID是全球性的,每页不应超过一个。将您的活动附加到班级。

events: {
'click .save-btn': 'save'
}

另外,请确保在完成使用后处理您的观点:

var MyView = Backbone.View.extend({
  events: {
   'click .save-btn': 'save'
  },

  ...

  dispose: function() {
    this.unbind();
    this.remove();
  }
};

var view = MyView();
...
view.dispose();

干杯。

答案 1 :(得分:0)

尝试使用el

var MyView = Backbone.View.extend({
    el: '#wrapper_of_save_element',

    events: {
       'click #save': 'save'
    },

    save: function() {
        ...
    }
});

所以你的事件只在你的#wrapper_of_save_element里面(例如一个包装div)

http://backbonejs.org/#View-el