0

我有一个模型,它具有三个字段 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

4

1 回答 1

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);
于 2014-10-16T10:43:21.053 回答