[英]Validation groups for Backbone.Validation
我有一個Backbone模型 ,例如User
,我想在“ 注冊”頁面和“ 更改設置”頁面中重用它。在“ 注冊”頁面中,我有一個包含兩個字段的表單 : 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
它適用於“ 注冊”表單,但由於缺少密碼, 因此在“ 更改設置”表單中不起作用 。
有沒有一種方法可以像我一樣在兩種不同形式上重復使用相同的驗證 ? 類似於驗證組 ,一組用於注冊字段,另一組用於設置字段(在這里我可以排除密碼)?
我有一個想法,如果您使用的是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.