2016-04-12 6 views
3

レコードでサーバーが応答しないときにエラーメッセージを表示したいと思います。ember js 2.0でエラーメッセージを表示するには

ルートハンドラでモデル:

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

アクション:

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')); 
     }); 
    }, 

テンプレートは、すべてのエラーメッセージが表示されていません。

テンプレート:

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

残念ながら、エラーメッセージは表示されません。

+0

こんにちは。あなたのプロジェクトをgithubにアップロードしましたか?たぶんもっと多くのコードを私たちと共有することができます。いくつかのサーバー応答ペイロードを共有してください。どのアダプターを使用しますか? – Zoltan

答えて

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の答えをお読みになることをお勧めします。

+0

テンプレート内にエラーメッセージが表示されません.errorメッセージがモデルに設定されていません。 Emberデータモデルでは、エラープロパティで長さが0であるためです。 –

+1

私が言ったように、エラーをキャッチするには二つの方法があります:一つは手動で 'catch'メソッドを使い、もう一つはあなたの' template'にあるコードを使って自動的に行います。 2番目のオプションを選択した場合は、サーバから送られたペイロードを特定の方法でビルドして、 'ember-data'が自動的にそれを理解し、errorプロパティを埋める必要があります。サーバーの応答を提供し、使用しているアダプターを教えてください。 –

2

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

関連する問題