简体   繁体   English

为什么我不能在Backbone的View事件中的一个语句中将单个事件绑定到多个选择器?

[英]Why can't I bind a single event to multiple selectors in one statement in Backbone's View events?

I have the following Backbone View: 我有以下骨干网视图:

var View = Backbone.View.extend({
    events: {
      'change [name="title"], change [name="body"]': 'onChangeEvent'
    },

    onChangeEvent: function (e) {
       // fires only for change [name="title"] event
    }
});

I need to bind onChangeEvent method to both change [name="title"] and change [name="body"] events. 我需要绑定onChangeEvent方法来change [name="title"]change [name="body"]事件。 But onChangeEvent method is invoked only for change [name="title"] event but not for change [name="body"] . 但是onChangeEvent方法仅用于change [name="title"]事件,而不用于change [name="body"]

Please help me, what I'm doing wrong? 请帮助我,我做错了什么?

From the fine manual : 精美的手册中

delegateEvents delegateEvents([events]) 委托 delegateEvents([events])
[...] Events are written in the format {"event selector": "callback"} . [...]事件以{"event selector": "callback"}的格式编写。

so the event in question is the first space-delimited component of the key in the events object. 因此,相关事件是events对象中键的第一个以空格分隔的部分。 Applying that to what you have gives 'change' as the event and [name="title"], change [name="body"] as the selector; 将其应用到所拥有的内容上,将'change'作为事件,将[name="title"], change [name="body"]作为选择器; furthermore, a comma is a multiple selector so your selector (as Backbone sees it) is looking for things with name="title" attributes or <change> elements with name="body" attributes. 此外,逗号是多重选择器,因此您的选择器(如Backbone所见)正在查找具有name="title"属性的属性或具有name="body"属性的<change>元素。 You don't have any <change> elements but you do have name="title" elements, hence the event triggering behavior you're seeing. 您没有任何<change>元素,但确实有name="title"元素,因此您看到的事件触发行为。

You can use one event entry with a multiple selector: 您可以将一个事件条目与多个选择器一起使用:

events: {
  'change [name="title"], [name="body"]': 'onChangeEvent'
  // -------------------^ but no extra 'change'
}

or two separate event entries: 或两个单独的事件条目:

events: {
  'change [name="title"]': 'onChangeEvent',
  'change [name="body"]' : 'onChangeEvent'
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将多个模型绑定到骨干网中的单个视图 - Bind multiple models to a single view in backbone 我无法使用lodash _.template从一个骨干视图中的多个集合中获取数据 - I can't get data from multiple collections inside one backbone view using lodash _.template 骨干-在一个$ el上绑定多个视图(事件重复) - Backbone - bind multiple views on one $el (events are duplicated) jQuery-为什么我不能在循环中将事件绑定到元素? - jQuery - why can't I bind events to elements in a loop? 为什么在主视图中无法获取元素的高度? - Why can't I get height of element in backbone view? 绑定多个事件或用开关绑定一个事件是否更有效 - Is it more efficient to bind multiple events, or to bind one event with a switch 骨干-绑定和取消绑定当前视图上的事件 - Backbone - bind and unbind events on current view 当View在Fancybox中时,我无法触发Backbone.js事件 - I can't get Backbone.js events to trigger when the View is within a Fancybox 在Backbone中,为什么在执行fetch()时不能触发“重置”事件? - in Backbone, why can't I trigger the 'reset' events when I do fetch()? Backbone视图中的事件,可以在应用程序中多次添加 - Events in a Backbone view that can be added multiple times in the application
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM