我有 Backbone模型,比如说User
,我想在注册页面和更改设置<中重复使用它/ em>页面..在注册页面中,我有一个表单,其中包含两个字段:email
和password
两者都需要,而在更改设置页面另一种表单包含email
和name
(但不是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
适用于注册表单,但在更改设置表单中它不起作用,因为密码是丢失。
在我的情况下,有两种不同形式的重用相同验证的方法吗?像验证组,一组用于注册字段,另一组用于设置字段(我可以排除密码)?...
答案 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