@@ -7,9 +7,10 @@ export default { validate }
77 * 验证 value 是否符合规则
88 * @param value {String} 要验证的值
99 * @param rules {Object} 规则
10+ * @param context {Object} 触发验证的Vue组件
1011 * @return {Object } 结果对象,有valid和msg两个字段
1112 */
12- function validate ( value , rules = { } ) {
13+ function validate ( value , rules = { } , context ) {
1314 // msg 为自定义错误信息
1415 const { msg } = rules
1516 const pass = { valid : true }
@@ -20,7 +21,7 @@ function validate (value, rules = {}) {
2021
2122 const results = Object . keys ( rules )
2223 . filter ( ruleName => canValidate ( ruleName , rules [ ruleName ] ) )
23- . map ( ruleName => checkSingleRule ( ruleName , rules [ ruleName ] , value , msg ) )
24+ . map ( ruleName => checkSingleRule ( ruleName , rules [ ruleName ] , value , msg , context ) )
2425
2526 const hasAsync = results . some ( isPromise )
2627 const getResult = results => {
@@ -35,9 +36,9 @@ function validate (value, rules = {}) {
3536/**
3637 * 验证单条规则
3738 */
38- function checkSingleRule ( ruleName , param , value , msg ) {
39+ function checkSingleRule ( ruleName , param , value , msg , context ) {
3940 const validFunction = typeof param === 'function' ? param : ruleset [ ruleName ]
40- const result = validFunction ( value , param )
41+ const result = validFunction . call ( context , value , param )
4142 if ( ! result . valid && msg ) { // 验证不通过且有自定义消息
4243 if ( typeof msg === 'string' ) { // 自定义消息为字符串时直接使用
4344 result . msg = msg
0 commit comments