0

我已经使用它的验证器成功实现了骨干表单插件,例如:

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为每个字段重建 did ,但它什么也没做。validatorsthis.model.form.commit()

请您给点建议好吗?

编辑:

现在,我正在使用“脏”方法在方法中添加额外的参数commit。请参阅 Backbone-forms 提交方法源:

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;
},
4

0 回答 0