2012-11-28 31 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函數來添加它自己。