Backbone.js 主干表单在运行时删除内置验证器
我已经成功地使用其验证器实现了主干表单插件,例如:Backbone.js 主干表单在运行时删除内置验证器,backbone.js,backbone-forms,Backbone.js,Backbone Forms,我已经成功地使用其验证器实现了主干表单插件,例如: var SampleModel = Backbone.Model.extend({ schema: { field1: { title: $t.field1, validators: ['required', 'number'] }, field2: { title: $t.field2, type: 'Select', options: $
var SampleModel = Backbone.Model.extend({
schema: {
field1: {
title: $t.field1, validators: ['required', 'number']
},
field2: {
title: $t.field2, type: 'Select', options: $options.field2, validators: ['required']
},
notes: {
title: $t.notes
}
}
});
现在,我正试图找到“正确”(此时此刻-任何)的方法来禁用内置验证器,例如,在某些复选框上单击。单击复选框后,允许保存表单而不进行验证
我尝试在没有验证程序的情况下为每个字段重新生成this.model.schema
,然后执行了this.model.form.commit()
,但没有执行任何操作
你能给我一些建议吗
编辑:
现在,我正在使用“dirty”方法将附加参数添加到commit
方法中。请参阅主干表单提交方法源:
commit: function(options, dontValidate) {
//Validate
options = options || {};
var validateOptions = {
skipModelValidate: !options.validate
};
// DIRTY
if(!dontValidate) {
var errors = this.validate(validateOptions);
if (errors) return errors;
}
//Commit
var modelError;
var setOptions = _.extend({
error: function(model, e) {
modelError = e;
}
}, options);
this.model.set(this.getValue(), setOptions);
if (modelError) return modelError;
},
我不知道主干表单,但您可以提交自定义函数还是只提交预制函数?在我们的内部验证中,我们使用的函数可以查询表单状态以进行更复杂的“切换”。是的,可以创建自定义的验证程序,但我认为,覆盖所有验证会有些过火。所以我认为应该有办法切换现有的验证。