Когда парсер JavaScript попадает сюда:
'events': {
'click input[type="button"]': this.buttonClicked
},
this
, вероятно, window
, а не экземпляр BB
, как вы ожидаете.У объекта window
нет свойства buttonClicked
(по крайней мере, у вас его нет), поэтому вы действительно говорите следующее:
'events': {
'click input[type="button"]': undefined
},
, и в этом ваша ошибка.
Если вы посмотрите на источник для delegateEvents
, вы увидите, что означает ChangeLog:
delegateEvents: function(events) {
// ...
for (var key in events) {
var method = events[key];
if (!_.isFunction(method)) method = this[events[key]];
// ...
}
},
Это _.isFunction
вызовто, что вас интересует. Это означает, что вы можете сказать что-то вроде этого:
events: {
'click input[type="button"]': function() { alert('pancakes!') },
'click button': some_function_that_is_in_scope
}
Таким образом, вы можете поместить определенные функции (либо по имени, если они доступны, либо как литералы функций) в events
справочная таблица.