2013-02-28 22 views
2

我想在我的BackBone視圖中使用mixins。在我的Backbone視圖中使用Mixins的麻煩Views

這裏是我的mixin:

var mixin = { 
    events: { 
    "click" : "doStuff" 
    }, 
    doStuff: function() { alert("bah!"); } 
} 

這裏是我如何混合成兩個獨立的觀點:

var view1 = Backbone.View.Extend({ ... }); 
_.extend(view1.prototype, mixin); 

var view2 = Backbone.View.Extend({ ... }); 
_.extend(view2.prototype, mixin); 

我遇到的麻煩是,單擊事件似乎只工作在view1。如果我首先初始化view 2,那麼點擊事件僅適用於view2

任何想法我做錯了什麼?

(提前)感謝您的幫助。

+1

它應該可以正常工作,仔細檢查你的代碼(http://jsfiddle.net/dfsq/C9wew/4404/) – dfsq 2013-02-28 20:48:24

+2

除此之外,包括mixin中的'events'從'_開始並不會很好。 extend'不會遞歸地擴展。 – 2013-02-28 21:00:38

+0

@dsfq - 你是對的,這是碰撞問題。我已經切換到使用自動處理碰撞的Cocktail庫,並且它現在可以正常工作。 – user1031947 2013-02-28 21:52:27

回答

0

您可以重載骨幹上的擴展方法,以適應您期望的繼承和合並。你只需要仔細閱讀一下文檔,找到你想要的東西。

這樣你有一個BaseObject然後擴展你的兩個對象。