私は、特定の要素が継承する一般的な要素のバックボーンビューを持っています。私は、すべての要素に適用する必要があるイベント処理ロジックと、子タイプの要素に固有のイベント処理ロジックを持っています。子ビューには、親ビューでも処理されるイベントに対する独自のコールバックがあるため、両方でイベントハッシュを使用しようとすると、子コールまたは親コールバックのいずれも呼び出されません。私はいくつかのコードで説明してみましょう:継承したBackbone.jsのイベントハッシュを上書きするビュー
var ElementView = Backbone.View.extend({
events: {
"mouseup": "upHandler",
"mousedown": "downHandler",
"mousemove": "moveHandler"
},
initialize: function() {
// add events from child
if (this.events)
this.events = _.defaults(this.events, ElementView.prototype.events);
this.delegateEvents(this.events);
}
});
var StrokeView = ElementView.extend({
events: {
"mousemove": "strokeMoveHandler"
}
});
私は、後に相続の別のレベルを持つことになります場合は特にどのように私は、拡張可能な方法でこれを解決するのでしょうか?これを処理する
あなたのイベントと名前空間が逆転しているとは思いますが、良い提案です。それは "mouseup:element"ではないでしょうか? –
@RobHruskaこれはドキュメンテーションが示唆しているものではなく、「野生の中の」例も私の推奨する使用法を指しています。最終的には、イベント名をどのように構造化するかはあなた次第です。 –
それは素晴らしいです。私はそれらを頻繁に使用せず、主にjQueryがどのように動作するかについて、主に私が見た他の例から外しています:http://docs.jquery.com/Namespaced_Events。 –