2013-02-28 20 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然后扩展你的两个对象。