2012-07-16 244 views
0

我創建了一個Backbone.js插件,它提供給定的JSON數據的基本網格佈局。我的問題是我不確定如何處理綁定事件到View類而不改變插件本身。我寧願不這樣做 - 我寧願讓插件的用戶能夠擴展視圖,或更改其原型以綁定自定義事件。骨幹視圖原型事件綁定

插件中的視圖是沒有綁定任何事件的基本視圖。它還包含一些我爲了簡單而省略的其他功能。

FlipCard.CardView = Backbone.View.extend({ 

    tagName: 'div', 

    className: 'card', 

// and more 

}); 

我試圖使用原型屬性在我單獨app.js文件綁定的事件,但他們似乎並沒有被觸發。

FlipCard.CardView.prototype.events = { 
    'click .card' : 'alert' 
}; 

FlipCard.CardView.prototype.alert = function(){ 
    alert("hello!"); 
}; 

而且我熟悉的.extend({})的功能,但是這是行不通的,除非我能以某種方式告知使用擴展版視圖的插件...我'寧可不做。

關於我應該在這裏做什麼的任何想法?

編輯︰原來這是一個愚蠢的錯誤。因爲該視圖具有'.card'類,並且我試圖將點擊事件綁定到'.card',所以沒有必要放置'點擊.card'。相反,事件應該是:

FlipCard.CardView.prototype.events = { 
    'click' : 'alert' 
}; 

回答

0

如果有人使用他們的插件,他們將要擴展Backbone.Model

myApp.Views.myCardView = FlipCard.CardView.extend({ 
    events: { 
     'click .card' : 'alert' 
    }, 
    alert: function() { 
     alert("hello!"); 
    } 
} 

這將創建插件視圖的擴展版本,以同樣的方式擴展您的FlipCard.CardView事件綁定到它,並且不會以任何方式更改插件。用戶然後將它實例化爲正常:

var someView = new myApp.Views.myCardView(); 
+0

謝謝傑克。問題是CardView實際上是在一個CardsView中實例化的 - 插件爲你處理所有這些。所以如果你擴展了基本的CardView,你也需要擴展CardsView。這就是爲什麼我只是想使用Prototype(事實證明,它的工作原理)。 – bento 2012-07-16 22:18:02