2

バックボーン.jsにビューがあり、イベントリストにイベントがある場合:

events: {
    'click #somebutton': 'clicked'         
},
clicked: function () {
    console.log('clicked');
}

次に、そのイベントを無効/有効にするにはどうすればよいですか?したがって、たとえば、クリックするとイベントが削除されます(ボタンは画面に表示されたままですが、グレー表示されますなど)。ビューの他の部分が更新されたとき、またはイベントが有効になったとき。確かにjqueryを使用できますが、この機能がバックボーンで使用できるかどうかを知りたいです。

答えてくれてありがとう

ポール

4

2 に答える 2

2

DOMとバックボーンビューの間のイベントバインディングをいつでも使用delegateEvents()してやり直すことができます。undelegateEvents()そうは言っても、私は通常、イベントハンドラーを保持し、ハンドラーに条件を追加するだけです。

// .disabled class (CSS) grays out the button

clicked: function(event) {
    var buttonEl = $(event.currentTarget);

    if (buttonEl.hasClass('disabled')) {
        // Do nothing
    } else {
        // Do something AND...
        buttonEl.addClass('disabled');
    }
}

removeClass('disabled')そうすれば、機能を復元したいときに、他のビューやコードを簡単に作成できます。

UPDATE-無効なプロパティ

コメントを参照してください。ただし、より単純ではるかに優れた解決策はdisabled="disabled"、ボタンのdisabledプロパティを使用することです。

于 2012-09-22T09:05:30.910 に答える
2

delegateEventsおよびundelegateEventsをバインドおよびバインド解除イベントに使用します。参照を確認してください:delegateEvents

于 2012-09-22T09:07:01.657 に答える