Backbone.js用于视图的多个delegateEvents

时间:2012-03-27 03:28:50

标签: backbone.js

关于视图中的delegateEvents的快速问题 - 我们可以在单个事件定义中指定多个事件绑定吗?

例如,而不是:

'keyup .text-input': 'textEvents',
'keydown .text-input': 'textEvents',
'focusin .text-input': 'textEvents',
'focusout .text-input': 'textEvents',
'click .text-input': 'textEvents',
...

这可能吗?

'keyup keydown focusin focusout click .text-input': 'textEvents',

1 个答案:

答案 0 :(得分:7)

不,你不能这样做。来自fine manual

  

事件以{"event selector": "callback"}

格式编写

event隐式地是一个单词(就像在jQuery和DOM事件中一样),而selector可以是任何jQuery样式的选择器。此外,this.events中的键是使用this regex解析的:

var delegateEventSplitter = /^(\S+)\s*(.*)$/;

所以event是第一个组件,只有第一个组件。

您可以自己构建events对象并手动调用delegateEvents

var catch  = ['keyup', 'keydown', 'focusin', 'focusout', 'click'];
var events = { };
_(catch).each(function(ev) { events[ev + ' .text-input'] = 'textEvents' });
this.delegateEvents(events);