3

当服务器响应未找到记录时,我想显示一条错误消息。

路由处理程序中的模型:

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}}

不幸的是,错误消息没有出现。

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 回答