Я пытаюсь привязать событие щелчка к тегу верхнего уровня моего базового представления.В настоящее время это выглядит так:
var PageSize = Backbone.View.extend({
tagName: 'option',
className: "setPageSize",
initialize: function(options) {
this.value = options.value;
this.text = options.text;
},
template: _.template(
"<%=text%>"
),
render: function() {
this.$el.html(this.template({text: this.text}));
return this;
},
events: {
'click .setPageSize': 'setPageSize'
},
setPageSize: function() {
console.log(this.value);
},
});
module.exports = PageSize;
Связка этих представлений PageSize создается другим представлением, которое добавляет их к тегу <select>
.Я вполне уверен, что другое представление не является проблемой, поскольку теги <option>
отображаются в теге <select>
с правильным текстом.
Проблема, с которой я столкнулся, заключается в том, что щелчоксобытие, которое должно сработать при нажатии на данный тег <option>
, никогда не срабатывает.Я думаю, это потому, что класс, который отслеживает событие click, является частью самого внешнего тега (класса, указанного с помощью tagName
и className
), к которому по какой-то причине не прикреплен прослушиватель событий.
Я думаю, что мне нужно каким-то образом привязать событие click ко всему представлению, а не к элементам шаблона в нем, но я совершенно не уверен в том, как мне это сделать.Я пытался сделать this.setElement(this.$el.html())
, но это делает так, что ни один из тегов <option>
вообще не отображается в <select>
.