使用 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/