簡體   English   中英

捕獲Backbone.View中的參考錯誤

[英]Catch reference errors in Backbone.View

有什么方法可以捕獲和處理Backbone視圖中的參考錯誤? 例如,損壞的集合使我的視圖崩潰(渲染方法永不觸發),而且標題視圖中的導航鏈接也不再起作用:

var View = Backbone.View.extend({
   //Uncaught ReferenceError: BadCollection is not defined 
   collection: new BadCollection(),
   render: function() {
     //Render never fires
     this.$el.html(_.template(tmpl)());
   }
})

return new View();

我之所以拒絕,是因為:
您提供的示例顯示了一個編譯錯誤。 由於從未聲明BadCollection因此將永遠不會創建View
從邏輯上講,除了使代碼適合編譯器理解之外,沒有其他方法可以避免該錯誤。 定義BadCollection對象。

View解決此問題的一種方法可以是在視圖上動態設置集合:

var view = new View({ collection: new BadCollection}); 

現在,您可以通過檢查集合是否已在initialize方法中定義並拋出可在實例化視圖時處理的錯誤來攔截View對象中的運行時錯誤:

var View = Backbone.View.extend({
    initialize: function(options){ 

        if(!(options.collection instanceof Backbone.Collection)){ 
            console.log("test"); 
            throw new Error("No Backbone Collection spotted!"); 
        }
    }
}); 

try { 
    var view = new View({ collection: "this is just a string"});  
}
catch(err) {
    console.log(err); 
}; 

http://jsfiddle.net/C9wew/7303/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM