1

Ember 1.13.3 でサーバー側のエラーを処理する正しい方法は何ですか?

私は RESTAdapter を使用しており、このコードの有無にかかわらず試してみました:

handleResponse: function(status, headers, payload) {
if (payload.errors) {
  return new DS.InvalidError(payload.errors);
}
return this._super(...arguments);

}

私のサーバーは、次のような JSON で 422 を返します。

            {
                errors: [
                    {
                        source: {pointer: 'data'},
                        detail: 'Not saved'
                    }
                ]
            }

私のルートでは、次のようにモデルを保存しています:

job.save().then(function() {
    console.log('OK');
  }).catch(function(err) {
    console.log('Error: ', err, ' Model ', job.get('isError'));
  });

エラーの場合、フローはブロックをキャッチし、「err」は予想どおり InvalidError オブジェクトですが、job.get('isError') は false を返します。

モデル プロパティ isError は常に false であるため、現在、コンポーネント UI でエラーを取得する方法がわかりません。

ありがとう

4

1 に答える 1

1

あなたは要点を逃していますisError

true の場合、アダプタは、サーバー側の検証エラー以外の理由でローカルの変更をバックエンドに保存できなかったことを報告しました。

確認しておくべきことはisValid

アダプターがサーバー側の検証エラーを報告しなかった場合、レコードは有効な状態になります。

于 2015-08-04T11:17:50.743 に答える