events: {
'click .pdf_preview' : 'onPreviewPdfClick',
'click a.next' : '_nextPointer',
'click a.prev' : '_prevPointer',
'mouseleave .mediapop-item-container' : 'onMouseLeave',
'mouseenter .mediapop-item-container' : 'onMouseEnter',
// Editable events
'click &.editable .dialog-header h3' : 'showEditTitleForm' <--- this
},
我创建了一个具有编辑模式的弹出视图。虽然我可以使用可编辑的版本扩展此视图,但我需要的是非常基本的,所以我将其设置为如果您通过this.options.editable
,view.el
元素将在其上设置“可编辑”类。
我想知道是否有办法在事件对象中指定选择器。这样,如果this.options.editable
不是true
,则不会触发事件。如果Backbone支持SASS样式选择器语法,那么上面的方法就可以了。唯一的选择是在showEditTitleForm
内检查。$ el.hasClass('ediable')。
我知道你是否设置了这样的选择器:
'click' : 'myAction',
点击事件将应用于this.el
容器。我希望只在附加类存在的情况下才应用回调。
是否可以在回调方法中添加检查而执行与上述类似的操作?
编辑:拼写错误
答案 0 :(得分:1)
您可以随时在调用delegateEvents
之前修改events
,但请注意不要修改视图原型附带的events
。像这样:
initialize: function() {
if(this.options.editable) {
this.events = _({}).extend(this.events, {
'click .dialog-header h3': 'showEditTitleForm'
});
}
}
注意_({}).extend(...)
,它会将this.events
(来自原型)和额外事件合并到一个空对象中,这样就不会意外地改变events
中的{{1}}原型。