2013-04-15 21 views
0

我有一個視圖代表一個文件夾。我有一堆子視圖,這個文件夾視圖創建,每個代表該文件夾中的唯一縮略圖。事實證明,每個子視圖的渲染方法都會被多次調用(3)。有沒有辦法找出如何調用視圖的渲染方法。如果模型元數據發生變化,則可能出現觸發事件的不同位置。它已經成爲一個巨大的混亂,我正在尋找一種方法來調試骨幹視圖,以瞭解什麼是觸發渲染方法。Backbone查看渲染功能多次調用

+0

您可以重載觸發器方法來跟蹤觸發了哪些事件。 – Loamhoof

+0

可以請你提供一些例子嗎? – sublime

回答

1

,我總是調試事件是這樣的:

view.on('all', function(eventName){ 
    console.log('Name of View: ' + eventName); 
}); 

你能做到這一點的看法,模型或集合。

例如http://jsfiddle.net/CoryDanielson/phw4t/6/

我手動添加的requestsync方法來模擬骨幹將如何實際執行。 rendered事件是自定義的 - 沒有人會聽它。只是爲了告訴你如何/何時發生。

1

因此,根據您的要求,下面是如何覆蓋trigger方法的示例。請注意,您必須覆蓋所有類型的類(模型,視圖,集合,路由器)。

var trigger = Backbone.Model.prototype.trigger; 
Backbone.Model.prototype.trigger = Backbone.View.prototype.trigger = Backbone.Collection.prototype.trigger = Backbone.Router.prototype.trigger = function(name) { 
    trigger.apply(this, arguments); 
    console.log(this, 'triggered the event', name, '.'). 
} 

你可以通過重寫每個方法來更具體地添加日誌中的對象類型。但你有一個總體思路。