1
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.editableview.el它上面会有一个“可编辑”类。

我想知道是否有办法在事件对象中指定该选择器。这样如果this.options.editableis not就不会触发事件true。如果 Backbone 支持 SASS 样式选择器语法,那么上面的方法就可以了。唯一的选择是检查 this.$el.hasClass('ediable') 内showEditTitleForm

我知道您是否设置了这样的选择器:

'click' : 'myAction',

点击事件将应用于this.el容器。如果存在附加类,我希望仅应用回调。

是否可以在不在回调方法中添加检查的情况下执行与上述类似的操作?

编辑:错字

4

1 回答 1

1

你总是可以在调用events之前进行修改delegateEvents,只是注意不要修改events附加到视图的原型。像这样的东西:

initialize: function() {
    if(this.options.editable) {
        this.events = _({}).extend(this.events, {
            'click .dialog-header h3': 'showEditTitleForm'
        });
    }
}

请注意_({}).extend(...), 将合并this.events(来自原型)和额外事件到一个空对象中,这样您就不会意外更改events原型中的 。

演示:http: //jsfiddle.net/ambiguous/dNYXN/

于 2013-02-17T03:42:59.950 回答