无法设置只读属性"错误"在ajax错误之后的对象上

时间:2014-09-18 00:25:39

标签: ajax ember.js ember-data

为了显示来自服务器的错误消息,使用以下代码:

    var onFail = function(result) {
        Ember.Logger.debug("ERROR CustomersCreateController");
        var json = result.responseJSON;
        Ember.Logger.debug(json['errors']);
        self.set("errors", json['errors']);
    };

    model.save().then(onSuccess, onFail);

但是当我从服务器得到这个回复时:

{"errors":[{"email":"O campo [email] precisa ser informado"}]};

当我尝试设置(“错误”)时会出现错误...任何难题? 顺便说一下,我从服务器发送了422错误。

EDIT(1) 我看到这个跳过默认错误功能的post,这是唯一的希望吗? :)

EDIT(2) 调整EDIT(1)的解决方案来使用它,但是Ember应该有更简单的东西!!!

    var onFail = function(result) {
        Ember.Logger.debug("ERROR CustomersCreateController");

        var json = result.responseJSON;
        self.set( "requestMessages", {});

        result.responseJSON["errors"].forEach(function(error_obj) {
            Ember.Logger.debug(error_obj.field + '='+ error_obj.message );
            self.set('requestMessages.' +error_obj.field, error_obj.message);
        });
    };

在模板

    <div {{bind-attr class=":form-group requestMessages.name:has-error"}} >
        <label for="name" class="col-sm-2 control-label">Nome</label>
        <div class="col-sm-10">
            {{input type="text" class="form-control" value=name}} {{#if
            requestMessages.name}} <span class="help-block">{{requestMessages.name}}</span>
            {{/if}}
        </div>
    </div>

1 个答案:

答案 0 :(得分:0)

我认为响应格式应为: {"errors":{"email":["O campo [email] precisa ser informado"]}}