2013-08-30 3 views
0

Я использую данные ember и хочу уловить и отобразить любые ошибки, возвращенные адаптером остального. Я посмотрел на вопрос hereобрабатывать ошибки от остальных адаптера

я добавил следующий код в моей модели Defintion:

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

и адаптер остальное возвращает код 422 (Unprocessable Entity)

однако, предупреждение не показать. Я что-то упускаю, или просто являюсь настоящим новичком?

благодаря

обновление # 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

Я думаю, что ваш что-то не хватает, используя becameInvalid работал для меня.

Например:

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

Update

По предложению @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

У вас есть последняя версия данных ember от http://builds.emberjs.com/? У более старых версий может отсутствовать обработчик отклонения. – Firpo

+0

Да, обновляю мое приложение, чтобы использовать 1.0 beta из данных ember-данных - вы узнаете, что он исправляет;) – jmls

Смежные вопросы