我的模型有三个字段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
答案 0 :(得分:1)
从未使用过Backbone.Validation但你可以自己进行验证,使用Backbone非常简单。
http://backbonejs.org/#Model-validate
只需在模型上定义validate
方法即可。它将接收当前模型属性以及传递给set
或save
的选项作为参数。
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);