如果我设置“;listenToOnce”;为同一事件触发多次

What happends if I set "listenToOnce" triggers multiple times for the same event

本文关键字:事件 设置 listenToOnce 如果      更新时间:2023-09-26

使用Backbone时,如果我在视图中多次设置同一个侦听器(使用listenToOnce),它是为同一事件创建多个一次性侦听器,还是只覆盖一个?

eventThatMightHappenMultipleTimes: function () {
    this.listenToOnce(this, 'someEvent', this.someEventHandler);
},
...
foo: function () {
    this.trigger('someEvent');
}

我想确保我不会留下任何无用的听众。

是的,它多次创建同一个侦听器。你可以很容易地测试它:

var SomeView = Backbone.View.extend({
  initialize: function() {
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
  },
  logEvent: function() {
    console.log("'someEvent' has been fired!");
  }
});
var view = new SomeView();
view.trigger('someEvent');

这是一个关于JS Bin的工作演示。

是的,它将为同一事件调用多个一次性侦听器。http://bit.ly/1EljaXf