一个规则来验证多个输入与Backbone.validation
问题描述:
我有,例如10个输入。我要检查,如果他们使用一个规则,但重申避免像这样空:一个规则来验证多个输入与Backbone.validation
firstInput :{
required: true,
msg: 'Empty!'
},
// ...
tenthInput :{
required: true,
msg: 'Empty!'
}
有没有使用使用Backbone Validation所有输入一个规则的方法?每个输入可以有其他的独特的验证规则的同时,如:
firstInput :{
pattern: email,
msg: 'Email!!!'
}
答
从Backbone Validation documentation:
// validation attribute can also be defined as a function returning a hash var SomeModel = Backbone.Model.extend({ validation: function() { return { name: { required: true } } } });
然后,你可以调整你的模型有一个函数:
var SomeModel = Backbone.Model.extend({
/**
* List of field which are required.
* @type {Array|Function}
*/
required: ['firstInput', 'secondInput', /*...*/ 'tenthInput'],
/**
* Same format as Backbone Validation
* @type {Object|Function}
*/
specificValidation: {
firstInput: {
pattern: "email",
msg: 'Email!!!'
}
},
validation: function() {
var inputs = _.result(this, 'required'),
rules = _.result(this, 'specificValidation'),
requiredRule = { required: true, msg: 'Empty!' };
// apply the default validation to each listed field
// only if not already defined.
_.each(inputs, function(field) {
rules[field] = _.defaults({}, rules[field], requiredRule);
});
return rules;
}
});
关于视图的绑定是什么?我做你的榜样,但'遗漏的类型错误:无法读取属性“叫” undefined'的出现 – nllsdfx
@DmitrySoroka它应该工作开箱即用,但也许我忘了的东西或者你正在使用的东西,我不知道,所以该错误可能是其他地方。你最好用[mcve]问一个新问题。 –
我想通了! 'specificValidation'的关键字可以是包含规则的对象的数组。但是你的'rules [field] = _.defaults({},rules [field],requiredRule)'只处理对象,而不处理对象数组。 – nllsdfx