【问题标题】:How to display error message in ember js 2.0如何在 ember js 2.0 中显示错误消息
【发布时间】:2016-08-02 23:54:27
【问题描述】:

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

路由处理程序中的模型:

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

很遗憾,错误消息没有出现。

【问题讨论】:

  • 嗨。你把你的项目上传到 github 了吗?也许您可以在那里与我们分享更多代码。您能否分享一些服务器响应负载,您使用哪个适配器?

标签: ember.js ember-data htmlbars


【解决方案1】:

Ember 依赖于 DS.error 对象,为了从模型中获取错误,响应必须满足要求。为了让 Ember 识别一个有效的错误,在 Ember 2.x 中,错误代码必须是 422 并且必须遵循 jsonapi http://jsonapi.org/format/#errors-processing

【讨论】:

    【解决方案2】:

    如果您想从后端响应中捕获错误,您必须使用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 的答案。

    【讨论】:

    • It's not working still 错误消息未显示在模板中。错误消息未在模型中设置。因为在 ember 数据模型中,它在错误属性中显示 0 长度。
    • 我告诉过你,有两种方法可以捕获错误:一种是手动使用catch 方法,另一种是自动使用template 中的代码。如果选择第二个选项,则需要以特定方式构建从服务器发送的有效负载,以便ember-data 自动理解并填充错误属性。如果您向我们提供服务器的响应并告诉我们您使用的是哪个适配器,将会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2017-01-02
    • 2013-02-05
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多