3

I would like to display an error message when the server responses with record not found.

The model in the route handler:

model: function(userLoginToken) {
    var userLoginToken= this.store.createRecord('userLoginToken');
    return userLoginToken;
},

The action:

actions: {

  sendOTP: function(userLoginToken) {

    var thisObject = this;
    var model=this.currentModel;

    this.store.findRecord('user-login-token', userLoginToken.get('mobileNumber')).then(function(response) {
        //thisObject.get('controller').set('model', response);
      },
      function(error) {
        //thisObject.get('controller').set('model', error);
        //alert("model======== "+model.get('errors'));
      }); 
    },

The template is not displaying any error message.

The template:

{{#each model.errors.messages as |message|}}
  <div class="errors">
    {{message}}
  </div>
{{/each}}

Unfortunately, the error message doesn't appear.

4

2 に答える 2

2

Ember は DS.error オブジェクトに依存しています。モデルからエラーを取得するには、応答が要件を満たす必要があります。Ember に有効なエラーを認識させるには、Ember 2.x でエラー コードを 422 にする必要があり、jsonapi http://jsonapi.org/format/#errors-processingに従う必要があります。

于 2016-04-19T14:24:53.460 に答える
1

バックエンドの応答からエラーをキャッチしたい場合は、次のcatchメソッドを使用する必要があります。

this.store.findRecord('user-login-token', userLoginToken.get('mobileNumber'))
  .then(success => {
    // Do whatever you need when the response success
  })
  .catch(failure => {
    // Do whatever you need when the response fails
  })
},

テンプレートで行っているようにエラーを自動的にキャッチするには、バックエンドが正しい方法で応答する必要があります。このSO questionの回答を読むことをお勧めします。

于 2016-04-12T13:41:10.263 に答える