我有以下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
}
});
我需要将onChangeEvent
方法绑定到change [name="title"]
和change [name="body"]
个事件。但onChangeEvent
方法仅针对change [name="title"]
事件调用,但不针对change [name="body"]
调用。
请帮助我,我做错了什么?
答案 0 :(得分:3)
来自fine manual:
delegateEvents
delegateEvents([events])
[...]事件以{"event selector": "callback"}
格式撰写。
所以有问题的事件是events
对象中键的第一个以空格分隔的组件。将其应用于您所拥有的内容会将'change'
作为事件,将[name="title"], change [name="body"]
作为选择器;此外,逗号是multiple selector,因此您的选择器(如Backbone所看到的)正在查找包含name="title"
属性或<change>
元素且具有name="body"
属性的内容。您没有任何<change>
元素,但确实有name="title"
个元素,因此会触发您正在看到的事件。
您可以将一个事件条目与多个选择器一起使用:
events: {
'change [name="title"], [name="body"]': 'onChangeEvent'
// -------------------^ but no extra 'change'
}
或两个单独的事件条目:
events: {
'change [name="title"]': 'onChangeEvent',
'change [name="body"]' : 'onChangeEvent'
}