backbone.js中的异常处理

今天收到一个网友(暖阳下的懒猫)对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的应用- from the5fire.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券