2016-04-12 32 views
3

我想顯示一條錯誤消息,當服務器響應與記錄未找到。如何在餘燼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

它不工作仍然錯誤消息未顯示在模板中。錯誤消息未在模型中設置。因爲在燼數據模型中,它顯示的錯誤屬性長度爲0。 –

+1

正如我告訴過你的,有兩種方法來捕捉錯誤:一種是使用'catch'方法手動執行,另一種則使用'template'中的代碼自動執行。如果選擇第二個選項,則需要以特定方式爲服務器發送有效負載,以便'ember-data'自動理解並填充錯誤屬性。如果您向我們提供服務器的響應並告訴我們您正在使用哪個適配器,將會有所幫助。 –

2

Ember依賴於DS.error對象,爲了從您的模型中獲取錯誤,響應必須滿足要求。爲了讓Ember識別出有效的錯誤,在Ember 2.x中錯誤代碼必須是422並且必須遵循jsonapi http://jsonapi.org/format/#errors-processing