Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干模型-如何从事件处理程序执行外部函数?_Javascript_Backbone.js_Scope_This_Underscore.js - Fatal编程技术网

Javascript 主干模型-如何从事件处理程序执行外部函数?

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

在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);
    }
});
如何从子对象中声明的事件处理程序调用模型的错误处理程序函数(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变量是缺少的链接。