我想用Backbone.Events
我的父对象之一替换某个子对象中的系统。例子:
// initialize function of the repository object
initialize: function() {
var users = new Backbone.Collection();
// we save a reference of our event system in ourEvents object
var ourEvents = {};
ourEvents.on = this.on;
ourEvents.off = this.off;
ourEvents.trigger = this.trigger;
ourEvents.bind = this.bind;
ourEvents.unbind = this.unbind;
// now we overwrite events in users.collection with our one
_.extend(users, ourEvents);
// now we listen on the test event over this
this.on('test', function() { alert('yiha'); });
// but triggering over users works too!
users.trigger('test');
}
正如你一样,我们现在得到了某种一对多的事件系统。一个侦听器和许多可以触发事件的对象。
这有助于我在使用不同的Backbone.Collections
或Backbone.Models
与前端具有相同视图系统的情况下工作。
如您所见,解决方案还不是最优的。
是否有更短的方法来覆盖事件系统?
更新:
所以我研究了主干源代码,发现它Backbone.Events
保存了一个回调列表:
this._callback
. 这至少在理论上应该有效:
this.users._callbacks = this._callbacks = {};