Javascript 主干模型-如何从事件处理程序执行外部函数?
在Backbonejs中,即使处理程序使用外部模型中的函数,也可以在循环中初始化事件处理程序吗 例如,我怎样才能让下面这样的东西发挥作用Javascript 主干模型-如何从事件处理程序执行外部函数?,javascript,backbone.js,scope,this,underscore.js,Javascript,Backbone.js,Scope,This,Underscore.js,在Backbonejs中,即使处理程序使用外部模型中的函数,也可以在循环中初始化事件处理程序吗 例如,我怎样才能让下面这样的东西发挥作用 var MyModel = Backbone.Model.extend({ eventHandlers: { onerror: function(e) { this.myErrorHandler(e); // doesnt work }, }, initialize: funct
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);
}
});
如何从子对象中声明的事件处理程序调用模型的错误处理程序函数(myErrorHandler)?还是有其他方法来实现这一点
TIA您的意思是对绑定到模型实例的键定义的事件执行每个处理程序吗
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);
}
});
但是,如果您想为同一事件使用多个处理程序呢?为什么不使用
this.on('error',this.myErrorHandler,this)
而不是.each()
?实际上,我还想在一个循环中添加多个处理程序,这里只显示了一个作为示例。谢谢!绑定到for循环中的this变量是缺少的链接。