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.editableはイベントがトリガーされません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.eventsevents

デモ: http://jsfiddle.net/ambiguous/dNYXN/

于 2013-02-17T03:42:59.950 に答える