Guest User

Untitled

a guest
Jul 29th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. ```js
  2. const form = new Form({
  3. children: [
  4. {
  5. name: 'username',
  6. validate: validation(
  7. validation.required(),
  8. validation.async((value) =>
  9. mockServerCall(1000, () => value === 'john' ? 'username is taken' : null)))
  10. },
  11. {
  12. name: 'password',
  13. validate: validation(
  14. validation.required(),
  15. validation.async((value) =>
  16. mockServerCall(1000, value => value && value.length < 6 ? 'invalid password' : null)))
  17. }
  18. ]
  19. });
  20.  
  21. const username = form.get('username');
  22. const password = form.get('password');
  23.  
  24. username.onChange('test'); // initiates call 1 to the server
  25.  
  26. console.log(username.hasErrors); // false
  27. console.log(username.errors); // null
  28. console.log(password.hasErrors); // false
  29. console.log(password.errors); // null
  30. console.log(form.hasErrors); // false
  31. console.log(form.errors); // null
  32.  
  33. username.onChange(''); // no call to the server
  34.  
  35. console.log(username.hasErrors); // true
  36. console.log(username.errors); // ['Required']
  37. console.log(password.hasErrors); // false
  38. console.log(password.errors); // null
  39. console.log(form.hasErrors); // true
  40. console.log(form.errors); // ['Required']
  41.  
  42. // ... waiting asynchronously
  43. // a bit later, before response 1 comes from the server (which is ignored anyway)
  44.  
  45. console.log(username.hasErrors); // true
  46. console.log(username.errors); // ['Required']
  47. console.log(password.hasErrors); // false
  48. console.log(password.errors); // null
  49. console.log(form.hasErrors); // true
  50. console.log(form.errors); // ['Required']
  51.  
  52. password.onChange('123'); // initiates call 2 to the server
  53.  
  54. // ... waiting asynchronously
  55. // a bit later, before response 2 comes from the server
  56.  
  57. console.log(username.hasErrors); // true
  58. console.log(username.errors); // ['Required']
  59. console.log(password.hasErrors); // false
  60. console.log(password.errors); // null
  61. console.log(form.hasErrors); // false, because it waits for the async validated child
  62. console.log(form.errors); // null
  63.  
  64. username.onChange('andrew'); // initiates call 3 to the server
  65. username.onChange('john'); // initiates call 4 to the server
  66.  
  67. // ... waiting asynchronously
  68. // a bit later, before responses 2, 3 and 4 come from the server
  69.  
  70. console.log(username.hasErrors); // false
  71. console.log(username.errors); // null
  72. console.log(password.hasErrors); // false
  73. console.log(password.errors); // null
  74. console.log(form.hasErrors); // false
  75. console.log(form.errors); // null
  76.  
  77. // ... waiting asynchronously
  78. // later after reponse 2 comes from the server
  79.  
  80. console.log(username.hasErrors); // false
  81. console.log(username.errors); // null
  82. console.log(password.hasErrors); // true
  83. console.log(password.errors); // ['invalid password']
  84. console.log(form.hasErrors); // true
  85. console.log(form.errors); // ['invalid password']
  86.  
  87. // ... waiting asynchronously
  88. // later after reponse 3 comes from the server, which is ignored
  89.  
  90. console.log(username.hasErrors); // false
  91. console.log(username.errors); // null
  92. console.log(password.hasErrors); // true
  93. console.log(password.errors); // ['invalid password']
  94. console.log(form.hasErrors); // true
  95. console.log(form.errors); // ['invalid password']
  96.  
  97. // ... waiting asynchronously
  98. // later after reponse 4 comes from the server
  99.  
  100. console.log(username.hasErrors); // true
  101. console.log(username.errors); // ['username is taken']
  102. console.log(password.hasErrors); // true
  103. console.log(password.errors); // ['invalid password']
  104. console.log(form.hasErrors); // true
  105. console.log(form.errors); // ['username is taken', 'invalid password']
  106. ```
Add Comment
Please, Sign In to add comment