有没有办法在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();
答案 0 :(得分:2)
我会说不,因为:
您提供的示例显示编译错误;永远不会创建View
,因为BadCollection
从未被宣布过
从逻辑上讲,除了使代码适应编译器理解之外,不应该是绕过这个错误的方法。定义BadCollection对象。
从View
的pov解决此问题的一种方法是在视图上动态设置集合:
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);
};