Backbone.js用于视图的多个delegateEvents

cra*_*awf 3 backbone.js

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

例如,而不是:

'keyup .text-input': 'textEvents',
'keydown .text-input': 'textEvents',
'focusin .text-input': 'textEvents',
'focusout .text-input': 'textEvents',
'click .text-input': 'textEvents',
...
Run Code Online (Sandbox Code Playgroud)

这可能吗?

'keyup keydown focusin focusout click .text-input': 'textEvents',
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 7

不,你做不到.从精细手册:

事件以格式编写 {"event selector": "callback"}

event隐含一个字(就像在jQuery和DOM的事件),而selector可以是任何jQuery的风格选择.此外,this.events使用此正则表达式解析键入:

var delegateEventSplitter = /^(\S+)\s*(.*)$/;
Run Code Online (Sandbox Code Playgroud)

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

你可以events自己构建对象并delegateEvents手动调用这样的东西:

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

  • 我整理了一个JSFiddle,演示了这不起作用"http://jsfiddle.net/derickbailey/hFAAC/这太糟糕了,因为jQuery支持它.它只是Backbone没有.也许我会提交一个拉请求Backbone这个.:) (2认同)