У меня есть следующий крючок модели маршрута:
model() {
return this.store.query('page').then(
(result) => { return result; },
(errors) => { return errors; }
);
}
Я возвращаю базовую ошибку в своем API, чтобы определить лучший способ отображения ошибок в случае сбоя API при попытке заполнить исходную модель.
Ответ:
{
"errors": [
{
"detail": "Test",
"source": {
"pointer": "data/attributes/general"
}
}
]
}
Это поймано, и у меня осталась модель, содержащая ErrorClass.
Я ожидаю, что указанная выше ошибка будет доступна с помощью «общего» ключа и сможет сделать следующее в шаблоне:
{{#each model.errors.general as |error|}}
<div class="error msg_animate">{{error.message}}</div>
{{/each}}
Но я не могу получить доступ к ошибкам таким образом. Кажется, мой ответ об ошибке анализируется неправильно, потому что я могу получить доступ к ошибкам как таковым:
{{#each model.errors as |error index|}}
<div class="error msg_animate">{{error.detail}} - {{error.source.pointer}}</div>
{{/each}}
Это сопоставляется с базовым ErrorClass, показанным выше, и выводит:
Test - data/attributes/general
Это неожиданно. Что мне не хватает?
ОБНОВЛЕННАЯ ИНФОРМАЦИЯ
У меня есть следующее, которое работает на другом маршруте. Разница в том, что он возвращает ошибки после попытки сохранить модель (а не напрямую из хука model():
template.hbs
{{#each model.errors as |error|}}
<div class="error msg_animate">{{error.message}}</div>
{{/each}}
route.js
actions: {
submit: function(model){
model.save().then((resp) => {
this.transitionTo('admin.page-edit', resp.data.attributes.permalink);
}, function(resp){
// errors show on template
});
}
}
Я совсем запутался в разнице. Оба ответа от моего API кажутся абсолютно одинаковыми с точки зрения формата.
model.errors
это массив, то каждыйmodel.errors.general
не имеет смысла, верно? - person Mark Fox   schedule 05.10.2016{{#if model.errors.general}} <div class="error msg_animate">{{model.errors.general.message}} </div>
{{/if}}` Я ожидаю, что это сработает, основываясь на других вещах, которые я читал на SO. Я мог бы быть далеко, конечно. - person Gurnzbot   schedule 05.10.2016model.errors
— это список ошибок, поэтому вы можете получить доступ к первой с помощьюmodel.errors[0]
, и если у первой ошибки был общий ключ, вы могли бы получить к ней доступ, какmodel.errors[0].general
— каждый руль предназначен для использования со структурами, подобными спискам, а не с картой. подобные структуры - person Mark Fox   schedule 05.10.2016{{log 'model.errors - ' model.errors}}
.. это напечатает объект в консоли. это должно многое объяснить. - person Ember Freak   schedule 06.10.2016detail
иsource -> pointer
. Я ожидаю, что смогу получить доступ к ошибкам из моей модели, как описано здесь. Однако это не работает. Является ли проблема тем фактом, что я изначально возвращаю ошибку из моего хука model()? Должен ли я использовать подсостояние ошибки вместо исходного шаблона? - person Gurnzbot   schedule 06.10.2016isAdapter:true
, если для него установлено значение true, ваши ответы об ошибках не анализируются и не задаются в хэше моделиerrors
. поэтому, пожалуйста, убедитесь, что код состояния 422 должен прийти. - person Ember Freak   schedule 06.10.2016