2013-08-30 34 views
0

我正在使用ember-data,並且想要捕獲並顯示其餘適配器返回的任何錯誤。我看着here處理來自其他分析器的錯誤

我下面的代碼添加到我的模型確定指標的問題:

becameInvalid: function(errors) { 
     alert ("here" + errors); 
    }, 

但是其餘的適配器返回一個422(無法處理的實體)的代碼,警報不顯示。我錯過了什麼,或者只是一個真正的新手數字?

感謝

更新#1:

取得一些進展。其餘的服務器返回以下JSON:

{"errors":{ "lastName": ["LastName cannot be blank"] }} 

該模型已經

becameInvalid: function(errors) { console.log(JSON.stringify(errors)); }, 

然而,控制檯現在有以下幾點:

{"email":"[email protected],com","firstName":"Julian","id":"aa7c4b42-df64-8fb8-d213-0ad81‌​c9bc213","lastName":"","notes":"ccc"} 

這似乎是記錄的JSON本身,而不是錯誤。

我怎樣才能找到錯誤?我試過

console.log(errors.get("errors.lastName") 

但是沒有定義。

+0

你能顯示關於你的代碼的更多信息,比如模型映射和返回的json響應嗎? –

回答

0

嘗試:

becameError: function(object) { 

} 
0

我認爲你失去了一些東西,使用becameInvalid爲我工作。

例如:

App.Person = DS.Model.extend({ 
    name: DS.attr('string') , 
    becameInvalid: function(errors) {   
     alert(errors.get('errors.name').join(',')); 
    } 
}); 

更新

繼@fanta的建議,在表彰。也許你的問題是,在返回的JSON,預期的是:

{ 
    errors: { 
    field_a: ['error a', 'error b'], 
    field_b: ['error c'] 
    } 
} 

field_a必須有一些領域映射DS.attr(field_a)

給該樣本http://jsfiddle.net/marciojunior/8maNq/

+0

可能有可能他沒有返回錯誤字段的名稱,或者名稱與Ember Model中定義的名稱不匹配,名稱應該匹配。 – fanta

+0

感謝您的指出,我更新了答案。 –

0

嘗試在外觀使用DS.rejectionHandler

DS.rejectionHandler = function(reason) { 
    Ember.Logger.assert([reason, reason.message, reason.stack]); 

    throw reason; 
}; 

這應該抓住從適配器的所有錯誤。

+0

這似乎沒有做任何事情 - 也許我只是沒有得到什麼東西.. – jmls

+0

你有最新版本的來自http://builds.emberjs.com/的ember-data?舊版本可能沒有拒絕處理程序。 – Firpo

+0

是的,更新我的應用程序使用1.0測試版的燼數據 - 會讓你知道它修復了什麼;) – jmls