一个规则来验证多个输入与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; 
    } 
}); 
+0

关于视图的绑定是什么?我做你的榜样,但'遗漏的类型错误:无法读取属性“叫” undefined'的出现 – nllsdfx

+0

@DmitrySoroka它应该工作开箱即用,但也许我忘了的东西或者你正在使用的东西,我不知道,所以该错误可能是其他地方。你最好用[mcve]问一个新问题。 –

+0

我想通了! 'specificValidation'的关键字可以是包含规则的对象的数组。但是你的'rules [field] = _.defaults({},rules [field],requiredRule)'只处理对象,而不处理对象数组。 – nllsdfx