the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


backbone.js中的异常处理

作者:the5fire | 标签:   | 发布:2012-05-30 3:04 p.m. | 阅读量: 4105, 4092
今天收到一个网友(暖阳下的懒猫)对backbone.js中的提问邮件,回答了下,觉得应该有其他人也会遇到这样的问题,于是征求了暖阳下的懒猫同意,把邮件发到这里,下面是邮件内容:

暖阳下的懒猫:
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的应用
----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: