【发布时间】:2023-04-08 12:41:01
【问题描述】:
我正在尝试将点击事件绑定到我的主干视图的顶级标签。目前看起来是这样的:
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> 标记时应该触发的点击事件永远不会触发。我认为这是因为单击事件监视的类是最外层标记的一部分(使用tagName 和className 指定的标记),由于某种原因,它没有附加事件侦听器。
我认为我需要以某种方式将 click 事件绑定到整个视图而不是其中的模板项,但我完全不确定我将如何去做。我已经尝试过this.setElement(this.$el.html()),但这样做会导致<option>标签根本不会出现在<select>中。
【问题讨论】:
-
在你的事件对象中将这个
'click .setPageSize': 'setPageSize'改成这个'click': 'setPageSize' -
这有效 - 如果您将其作为实际答案发布,我会接受它。
标签: javascript backbone.js backbone-views