[英]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.