javascript - 如果我为同一事件设置 "listenToOnce"多次触发会发生什么

标签 javascript jquery backbone.js

使用 Backbone 时,如果我在一个 View 中多次设置同一个监听器(使用 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');

这里是 a working demo on JS Bin .

关于javascript - 如果我为同一事件设置 "listenToOnce"多次触发会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895555/

相关文章:

html - 在没有 AJAX 的情况下加载页面的一部分

javascript - 如何使用 Backbone.validation 添加我自己的验证器?

javascript - 从 jenkins 作业加载到 PHP

javascript - 单击按钮时 jquery 切换 <td>

javascript - Destroy() 无法正常工作

javascript - 在类生成的 gsp 中显示图像

javascript - 在模型上生成自定义 Backbone 错误。保存成功

javascript - 如何在 qunit 中测试 html5 拖放

javascript - jQuery 中选择器和条件的问题

c# - 如何从我的 aspx 网页调用客户端计算机上的 win 应用程序?