簡體   English   中英

Backbone.Validation的驗證組

[英]Validation groups for Backbone.Validation

我有一個Backbone模型 ,例如User ,我想在“ 注冊”頁面和“ 更改設置”頁面中重用它。在“ 注冊”頁面中,我有一個包含兩個字段的表單emailpassword都需要,而在在“更改設置”頁面上,還有另一種包含emailname 表格 (但沒有password字段),第一個不需要,第二個則不需要。

使用Backbone.Validation插件,在驗證過程中我有類似以下內容:

var User = Backbone.Model.extend({

  validation: {
    name: {
      rangeLength: [0, 100]
    }
    email: {
      required: true
      pattern: "email"
      rangeLength: [1, 100]
    }
    password: {
      required: true
      rangeLength: [8, 100]
    }
  } // validation

} // User

它適用於“ 注冊”表單,但由於缺少密碼, 因此在“ 更改設置”表單中不起作用

有沒有一種方法可以像我一樣在兩種不同形式上重復使用相同的驗證 類似於驗證組 ,一組用於注冊字段,另一組用於設置字段(在這里我可以排除密碼)?

我有一個想法,如果您使用的是thedersen v0.8.2及更高版本的ribs.validator。
但是它會通過引入一個flag屬性來稍微污染模型,該屬性用於確定所需的驗證類型。

var User = Backbone.Model.extend({


  validation: function() {
      var validationCriteria = {
        name: {
          rangeLength: [0, 100]
        }
        email: {
          required: true
          pattern: "email"
          rangeLength: [1, 100]
        }
        password: {
          required: true
          rangeLength: [8, 100]
        }
      }

      switch (this.attributes.validationMode) {
        case 'signup':
          // do nothing since we need all validation. just to demonstare, if just two modes can just simple if statement
          break;
        case 'changeSetting':
          delete validationCriteria.password;
          break;
        default:
          break;
      }

      return validationCriteria; // validation

    } // User
});

var user = new User({
    validationMode: 'signup'
  }) //when initiate the model in signup view

var user = new User({
    validationMode: 'changeSetting'
  }) //when initiate the model in change setting view

暫無
暫無

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

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