From c6f0c268cfc2fadf9b901c5bd3f6c23a4ea48658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=A0=E7=BC=AA?= Date: Mon, 23 Mar 2015 17:53:30 +0800 Subject: [PATCH 1/2] support custom descriptor --- lib/Validation.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/Validation.js b/lib/Validation.js index 8366cf8..66dea0a 100644 --- a/lib/Validation.js +++ b/lib/Validation.js @@ -12,6 +12,7 @@ class Validation extends React.Component { constructor(props) { super(props); this.validators = {}; + this.descriptors = props.models || {}; ['attachValidator', 'detachValidator', 'handleInputChange'].forEach((m)=> { this[m] = this[m].bind(this); }); @@ -19,16 +20,25 @@ class Validation extends React.Component { getSchema(validator) { var ret = {}; - var rules = validator.props.rules; - if (!Array.isArray(rules)) { - rules = [rules]; - } - rules.forEach((r)=> { - if (!r.validator) { - r.type = r.type || 'string';// default string type for form field + var fieldName; + var rules; + if (!validator.props.field){ + rules = validator.props.rules; + fieldName = validator.getName(); + if (!Array.isArray(rules)) { + rules = [rules]; } - }); - ret[validator.getName()] = rules; + rules.forEach((r)=> { + if (!r.validator) { + r.type = r.type || 'string';// default string type for form field + } + }); + ret[fieldName] = rules; + }else { + var modelName; + [modelName, fieldName ] = validator.props.field.split("."); + ret[fieldName] = this.descriptors[modelName][fieldName]; + } return ret; } From b22690f87a10bf8f6afd32b457c27ef6329475d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=A0=E7=BC=AA?= Date: Mon, 23 Mar 2015 18:04:52 +0800 Subject: [PATCH 2/2] delete option field --- lib/Validation.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/Validation.js b/lib/Validation.js index 66dea0a..c38c3a7 100644 --- a/lib/Validation.js +++ b/lib/Validation.js @@ -12,7 +12,7 @@ class Validation extends React.Component { constructor(props) { super(props); this.validators = {}; - this.descriptors = props.models || {}; + this.descriptors = props.descriptors || {}; ['attachValidator', 'detachValidator', 'handleInputChange'].forEach((m)=> { this[m] = this[m].bind(this); }); @@ -22,9 +22,9 @@ class Validation extends React.Component { var ret = {}; var fieldName; var rules; - if (!validator.props.field){ + fieldName = validator.getName(); + if (!validator.props.model){ rules = validator.props.rules; - fieldName = validator.getName(); if (!Array.isArray(rules)) { rules = [rules]; } @@ -35,9 +35,7 @@ class Validation extends React.Component { }); ret[fieldName] = rules; }else { - var modelName; - [modelName, fieldName ] = validator.props.field.split("."); - ret[fieldName] = this.descriptors[modelName][fieldName]; + ret[fieldName] = this.descriptors[validator.props.model][fieldName]; } return ret; }