2012-11-28 29 views
1

当我调用如何获得HTTP StatusCodes在灰烬数据

App.store.createRecord(App.User, { name: this.get("name") }); 
App.store.commit(); 

我怎么知道它的成功,以及如何等待ASYN消息?

+1

Ember-Data目前不提供HTTP状态的错误处理,但它在路线图上。到目前为止,一种方法是扩展适配器以使用jQuery Ajax'statusCode'并为每个状态代码传递回调。 [**这个问题**](http://stackoverflow.com/questions/13349035/emberjs-handle-401-not-authorized)与你的方式类似,但更多的是在错误处理方面。 – MilkyWayJoe

回答

9

对于ember-data master中的DS.RESTAdapter,非常有限的错误处理是recently added

创建或更新记录(与批量提交禁用)和400和599之间的状态代码被返回时,将发生以下情况:

  • 422 Unprocessable Entity将过渡记录到“无效”状态并会将从服务器返回的任何错误添加到记录的errors属性中。

    适配器假定服务器将在以下格式JSON回应:

    { 
        errors: { 
        name: ["can't be blank"], 
        password: ["must be at least 8 characters", "must contain a number"] 
        { 
    } 
    

    (错误消息本身可能是字符串或只是字符串数组烬数据目前不关心哪个)

    为了检测这种状态:

    record.get('isValid') === false 
    
  • 所有其他状态码都会将记录转换到“错误”状态。

    为了检测这种状态下,使用:

    record.get('isError') === true 
    

更多的情况下,最终可能通过烬数据开箱即用的,如果你需要一些具体的事情来处理,但是就目前而言,你必须扩展DS.RESTAdapter,定制它的didError函数来添加它自己。