2017-03-02 17 views
1

私は3つのバックボーン・ビューを持っています(Month,Day,Week)。バックボーンで複数のビューを拡張できますか?

Baseビューには3つの共有すべてが共通するコードがいくつかあります。

は、その後、私はDayAndMonthBaseビューとDay & Weekシェア私はDayAndWeekBaseビューに出してあげること、他の共通のコードを入れますいくつかの共通のコードDay & Monthシェアがあります。 DayAndMonthBaseDayAndWeekBaseの両方がBaseを拡張します。

最後に、私のMonthビューはDayAndMonthBaseを拡張しますし、私のWeekビューは私のDayAndWeekBaseを拡張します。しかし、Dayビューでは、DayAndMonthBaseビューとDayAndWeekBaseビューの両方をどのように拡張できますか?

答えて

3

ここでは明確な階層構造がないので、私はこの種の問題を継承ではなくミックスインを使用して解決したいと考えています。 DayAndWeekBaseと一緒にDayAndMonthBaseのような構成は、剛性で伸張不能である。私がしたいのは、共通のビヘイビアーをオブジェクトとして定義し、次にではなくBackbone.View.extendを使用してビヘイビアをビューに注入することです。

機能を必要とする各ビューにこれらのミックスインを注入後

var mixin1 = { 
    .... 
} 

var mixin2 = { 
    .... 
} 

var mixin3 = { 
    .... 
} 

あなたのミックスインのオブジェクトを定義します。

var Day = Backbone.View.extend({ 
    .... 
}) 
_.extend(Day.prototype, mixin1); 
_.extend(Day.prototype, mixin2); 
_.extend(Day.prototype, mixin3); 


var Week = Backbone.View.extend({ 
    .... 
}) 
_.extend(Week.prototype, mixin1); 


var Month = Backbone.View.extend({ 
    .... 
}) 
_.extend(Month.prototype, mixin2); 

それはあなたがDayAndWeekBaseが実際に何をするか覚えておくの精神的負荷を持っていないので、この方法について推論する方が簡単です。ミックスインの名前を適切に指定すると、どのような種類の機能がビューに注入されているのかは明らかです。

関連する問題