暖阳下的懒猫:
hi,你好。
最近在看backbone相关的的东西,看到你写的一些列笔记很有启发。
但是有个问题我想不明白,就是如果发生错误是怎么处理的?
比如一个collection create了一条model,model会save到server,如果save过程中出现错误,collection不要add这条数据同时view不要展现这条数据怎么处理?
还有比如一个model的修改如save,destroy都会触发change事件导致view的render,如果发生错误怎么阻止render?
看了一些文章都讲的是成功的情况,所以想了解一下出错的情况下怎么处理,不知道你能不能抽时间给我讲解一下,谢谢啦。
回复:
很高兴我的笔记对你有启发 :- )
发生错误这个问题原先还真没考虑到。
刚才看了下,如果是server端的异常的话,是可以在backbone.js中处理的。这个异常指的是你在model.save或者collection.create的时候,出现的500错误,或者404错误。
对于create是出错和save时出错,采用的解决办法是相同的。并且你说的如何阻止render方法,这个只要把save里面的错误处理的参数填上就可以了。
首先是collection的create:
Todos.create(this.newAttributes(),{
wait: true,
error:function(model, error) {
alert('error');
}
});
在后面添加了参数:
{
wait: true, //设置create为同步模式,即等到服务器端响应才进行其他操作。
error:function(model, error) { //错误处理
alert('error');
}
}
其次在修改时的save和destroy触发reander的情况,只要在save和destroy中添加错误处理就行了。
在destroy中:
this.destroy({wait:true, error:function(model,error){
alert('发生错误!');
}});
在save中也是如此。
希望能够解答你的问题,如果还有疑问可以继续发邮件,或者到博客留言。
另外遇到问题要多看看官方文档,虽然backbone.js的官方文档写的内容比较少,但对解决问题还是有帮助的。
补充:这个异常的上下文:
7、backbone实例todos分析(一)
8、backbone实例todos分析(二)view的应用- from the5fire.com
----EOF-----
微信公众号:Python程序员杂谈
微信公众号:Python程序员杂谈