2016-07-09 3 views
0

У меня есть следующий Backbone View:Почему я не могу привязать одно событие к нескольким селекторам в одном выражении в событиях Backbone's 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"].

Пожалуйста, помогите мне, что я делаю неправильно?

ответ

3

От fine manual:

delegateEventsdelegateEvents([events])
[...] События записываются в формате {"event selector": "callback"}.

поэтому данное событие является первым компонентом ключа в объекте events. Применяя это к тому, что вы даете 'change' в качестве события, и [name="title"], change [name="body"] в качестве селектора; кроме того, запятая - это multiple selector, поэтому ваш селектор (как показывает Магистра) ищет вещи с атрибутами 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' 
} 
+0

Спасибо за ответ! – Erik

 Смежные вопросы

  • Нет связанных вопросов^_^