如何在ember js 2.0中显示错误消息

时间:2016-04-12 11:33:45

标签: ember.js ember-data htmlbars

我想在服务器响应时找不到记录时显示错误消息。

路线处理程序中的模型:

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

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

2 个答案:

答案 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的答案。