繁体   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