将函数传递给`events`哈希

时间:2011-12-28 02:47:50

标签: backbone.js

Backbone.View个实例中,可以设置回调的events哈希值:

events: { 'click #element' : 'myFunction' }

当我尝试访问的函数不是视图实例的直接函数(例如this.model.myFunction)时,我无法在events哈希中传递函数。我试过了:

events: { 'click #element' : 'model.myFunction' }

events: { 'click #element' : this.model.myFunction }

如何告诉我的骨干视图使用this.model.myFunction作为events哈希的回调?

1 个答案:

答案 0 :(得分:6)

不,你不能这样做。 relevant chunk of Backbone看起来像这样:

delegateEvents : function(events) {
  if (!(events || (events = getValue(this, 'events')))) return;
  this.undelegateEvents();
  for (var key in events) {
    var method = this[events[key]];
    if (!method) throw new Error('Event "' + events[key] + '" does not exist');
    //...

因此events中的值必须是视图对象中方法的名称。您可以自己路由事件:

events: { 'click #element': 'myFunction' },
// ...
myFunction: function(e) {
    this.model.myFunction(e);
}