在Backbonejs中,即使处理程序使用外部模型中的函数,是否可以在循环中初始化事件处理程序?
例如我怎样才能得到类似下面的内容?
var MyModel = Backbone.Model.extend({
eventHandlers: {
onerror: function(e) {
this.myErrorHandler(e); // doesnt work
},
},
initialize: function () {
var myObj = {}
_.each(eventHandlers, function(value, key) {
myObj[key] = value;
}, this);
},
myErrorHandler: function(e) {
console.error('my error handler', e);
}
});
如何从子对象中声明的事件处理程序中调用Model的错误处理函数(myErrorHandler)?或者还有其他方法可以实现这一目标吗?
TIA
答案 0 :(得分:1)
你的意思是对由其键定义的事件执行每个处理程序,绑定到模型实例吗?
var MyModel = Backbone.Model.extend({
eventHandlers: {
error: function(e) {
this.myErrorHandler(e); // doesnt work
}
},
initialize: function () {
var _this = this;
_.each(this.eventHandlers, function(value, key) {
_this.on(key, _(value).bind(_this));
});
},
myErrorHandler: function(e) {
console.error('my error handler', e);
}
});
但是如果你想为同一个事件安排多个处理程序呢?