Backbone.Validation的验证组

时间:2015-01-08 15:57:41

标签: javascript validation backbone.js backbone.validation.js

我有 Backbone模型,比如说User,我想在注册页面和更改设置<中重复使用它/ em>页面..在注册页面中,我有一个表单,其中包含两个字段: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

适用于注册表单,但在更改设置表单中它不起作用,因为密码是丢失。

在我的情况下,有两种不同形式的重用相同验证的方法吗?像验证组,一组用于注册字段,另一组用于设置字段(我可以排除密码)?...

1 个答案:

答案 0 :(得分:0)

如果您使用thedersen v0.8.2及更高版本的backbone.validator,我知道 但它会通过引入一个标志属性来稍微污染模型,该属性用于确定您需要哪种验证。

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