簡體   English   中英

對模型的多個字段進行骨干驗證並返回相同的錯誤

[英]Backbone Validations on multiple fields of a model and returning same error

我有一個模型,其中包含三個字段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

從未使用過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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM