我想在服务器响应时找不到记录时显示错误消息。
路线处理程序中的模型:
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 :(得分:2)
Ember取决于DS.error对象,为了从模型中获取错误,响应必须满足要求。为了让Ember识别出有效的错误,在Ember 2.x中,错误代码必须为422并且必须遵循jsonapi http://jsonapi.org/format/#errors-processing
答案 1 :(得分: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的答案。