2016-08-12 2 views
0

So habe ich eine validatePassword Funktion, die einige Validierung Zeug speziell für unser Projekt.Wie umgestalten, um es kürzer zu machen?

Derzeit ist es ein Objekt zurück, wie folgt aus:

{ 
    valid: boolean, 
    errors: array 
} 

So tatsächliche Nutzung wie folgt aussieht:

const passwordValidation = validatePassword(value) 

if (passwordValidation.valid === false) { 
    modifiedValidation.password.message = passwordValidation.errors 
    modifiedValidation.password.uiState = 'error' 
    formIsValid = false 
} 

Gibt es einen besseren Weg, dies zu tun, wo ich nicht zu ein Objekt als Ergebnis einer Funktion instanziieren und es dann verwenden, um Dinge zu tun?

Beispiel so etwas wie:

if (validatePassword(value).validity === true) 

Aber ich will nicht zu haben, die Funktion jedes Mal erneut ausführen Eigenschaften für den Zugriff auf von validatePassword(value) ...

Antwort

0

Ich denke, Ihr Code sieht eher auf den Punkt wie es ist, wenn Sie genau das tun. Wenn Sie jedoch mehrere Elemente auf sehr ähnliche Weise validieren, können Sie diesen Teil umgestalten, so dass Sie sich nicht wiederholen müssen.

function validate(validationResult, target) { 
    if(validationResult.valid === false) { 
     target.message = validationResult.errors; 
     target.uiState = 'error'; 
    } 
    return validationResult.valid !== false; 
} 

var formIsValid = [ 
    validate(validatePassword(value), modifiedValidation.password), 
    validate(validateOtherField(otherValue), modifiedValidation.other) 
].every(function(x) { return x; }); 
Verwandte Themen