骨干验证返回属性名称

时间:2015-07-23 07:54:21

标签: javascript backbone.js

模特:

 validation: {
        title: {
            required: true
        },
        body: {
            required: true
        }
    }

在视图中我打电话:

this.parent.model.isValid(['title', 'body']);

这只返回我的true / false,如何更改验证以获取无效的参数名称?

我不能一个接一个地传递属性,因为它可能很多。

2 个答案:

答案 0 :(得分:1)

docs伙伴

中解释了这一点
  

失败的验证会触发"无效" event,并使用此方法返回的值在模型上设置validationError属性。

var Chapter = Backbone.Model.extend({
  validate: function(attrs, options) {
    if (attrs.end < attrs.start) {
      return "can't end before it starts";
    }
  }
});

var one = new Chapter({
  title : "Chapter One: The Beginning"
});

one.on("invalid", function(model, error) {
  alert(model.get("title") + " " + error);
});

在你的情况下(代码未经过测试,我希望你能得到这个想法):

this.parent.model. = Backbone.Model.extend({
      validate: function(attrs, options) {
        var errors= new Array;
        if (!attrs.title) {
          errors.push("Title is required");
        }
        if (!attrs.body) {
          errors.push("Body is required");          
        }
        if errors.length
            return errors;
      }
    });

this.parent.model.on("invalid", function(model, error) {
      alert(error);
    });


//You don't need to pass an attribute list
this.parent.model.isValid();

请注意,我会将错误数组(如果有)保留在this.parent.model.validationError以便以后处理,这样您就不需要捕获&#34;无效&#34;模型上的事件

答案 1 :(得分:0)

覆盖验证功能http://backbonejs.org/#Model-validate

执行你想要的wtv过滤器并返回你想要的wtv对象。

希望有所帮助