如果我为同一事件设置 "listenToOnce" 多次触发会发生什么
What happends if I set "listenToOnce" triggers multiple times for the same event
当使用 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');
是的,它会为同一事件创建多个一次性侦听器。http://bit.ly/1EljaXf
当使用 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');
是的,它会为同一事件创建多个一次性侦听器。http://bit.ly/1EljaXf