对模型的多个字段进行主干验证并返回相同的错误

时间:2014-10-16 09:27:04

标签: backbone.js model backbone.validation.js

我的模型有三个字段field1,field2,field3。我必须验证,如果三个字段中的任何一个具有某个值,则不应返回任何错误,否则应返回错误。

我的研究:我可以使用Backbone.Validations插件。如下:

var model = Backbone.Model.extend({
  validation: {
    field1: {
        required: true,
        msg : "Field is required"
    }
    ,field2: {
        required: true,
        msg : "Field is required"
    }
    ,field3: {
        required: true,
        msg : "Field is required"
    }
  }
});

上述代码将验证所需的所有三个字段。

我很清楚,直到这里。我想要的是,如果field1为null,则只有field2被验证,类似地,如果field2为null,则field3被验证。如果field3也为null,则返回错误消息。只要发现三个字段中的任何一个具有值,就不应验证后续字段。

我不确定,是否可以使用Backbone.Validations插件进行此类条件验证。如果可能,请帮助。另外,请建议我可以用来更深入地学习Backbone的任何链接,因为我只是一个新手。

我正在关注Backbone.Validation的以下链接:https://github.com/thedersen/backbone.validation

1 个答案:

答案 0 :(得分:1)

从未使用过Backbone.Validation但你可以自己进行验证,使用Backbone非常简单。

http://backbonejs.org/#Model-validate

只需在模型上定义validate方法即可。它将接收当前模型属性以及传递给setsave的选项作为参数。

var MyModel = Backbone.Model.extend({
  validate: function(attrs, options){
    if(_.isUndefined(attrs.field1) && _.isUndefined(attrs.fields2) && _.isUndefined(attrs.field3)){
      //return your error as you wish
      return { message: "Either field1, field2 or field3 must be present" }
    }          
  }
});

请注意,Backbone文档指出,在validate方法中,如果一切正常,请不要返回任何内容。

然后,您可以随时测试验证:

var model = new MyModel();
console.log(model.isValid());

您可以在需要时收到此错误消息

console.log(model.validationError.message);