2012-02-09 13 views
4

カスタムBackbone.Viewクラスに抽象化したい共通コードを持つビューがいくつかあります。これを行うためのベストプラクティスはありますか?Backbone.Viewのサブクラス化

このようなことをするには良いパターンですか? :

一般的なビューコードをリファクタリングするためにビューを拡張する良い例へのポインタがあります。

答えて

4

最初に、あなたのinitializer()に渡されるオプションが表示されないので、バグです。

var GridView = Backbone.View.extend({ ... }) 
var GridViewWithNewFunctionsAndEvents = GridView.extend({ ... }) 

そして、あなたは、あなたがバックボーンの株式を拡張するだけのように、交換またはGridViewの機能を拡張し、new GridViewWithNewFunctionsAndEvents()を呼び出し、あなたが必要とする新しいオブジェクト内の余分な機能を得ることができます。

第二に、.extend()方法が継承されていますビュークラス。

あなたが初期化子を拡張する必要がある場合は、スーパークラスで初期化子を呼び出すためにこれを行うことができます:私はいくつかの編集をしたので

var GridViewWithNewFunctionsAndEvents = GridView.extend({ 
    initializer: function(options) { 
     GridView.prototype.initializer.call(this, options); 
     /* Your stuff goes here */ 
    } 
    }); 
+0

申し訳ありませんいくつかの擬似コードは途中でthere..saved。私はオーバーライドを扱うために考えているパターンの要点を得る。ビューイベントの文字列に特別なことをする必要がありますか? – claya

+0

うん。あなたがそれらに追加しようとするなら、イニシャライザでそれを行う必要があります: '_.extend(this.events、{'イベントdomobject': 'ハンドラ'、...})'そうでなければ、親クラスからイベントリスト全体をコピーします。 'delegateEvents()'は 'initializer'の後に起こるので、その後は何もする必要はありません。 –

関連する問題