2013-06-22 25 views
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

+0

爲什麼不只是this.on('error',this.myErrorHandler,this)'而不是'_.each()'? – Bojangles

+0

其實還有幾個我希望在循環中添加的處理程序,只是在這裏舉了一個例子。 – Bootstrapper

回答

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

但是如果你想爲同一事件有幾個處理程序呢?

+0

謝謝!綁定到for循環內的這個變量是缺失的鏈接。 – Bootstrapper

相關問題