0

在 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

4

1 回答 1

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);
    }
});

但是,如果您想为同一个事件有多个处理程序怎么办?

于 2013-06-22T14:14:07.303 回答