Due to a lot of recent changes to aurelia-validation. This tutorial is no longer work. I will try to provide some new post explaning the changes.
One of the features/plugin that I like best (mainly because its easy to setup and use in its basic form) is the aurelia-validation.
Recently there was some major changes to this plugin, but what I will discuss where is still valid, at least it is for me :).
If you have already Aurelia installed, you only need need to install the plugin, easy way using jspm:
1
|
jspm install aurelia-validation
|
Next we need to load our plugin. On the file that we use for configuring all the plugins (usually main.js on the root of you project):
1
2
3
4
5
6
7
8
9
10
|
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-validation');
aurelia.start().then(() => {
aurelia.setRoot('app');
});
}
|
With this done, we can start to create our form (form.html):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<template>
<form validate.bind="validation" submit.trigger="create()" autocomplete="off">
<div class="form-group">
<label>Name</label>
<input
type="text"
id="title"
class="form-control"
placeholder="Title"
value.bind="obj.title" />
</div>
<div class="form-group">
<label>Description</label>
<textarea
rows="3"
id="description"
class="form-control"
value.bind="obj.description">
</textarea>
</div>
<button
type="submit"
class="btn btn-primary btn-sm"
disabled.bind="!validation.result.isValid">Ok</button>
</form>
</template>
|
And our model (form.js):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import { inject } from 'aurelia-framework';
import { Validation } from 'aurelia-validation';
// inject the validation class that we need
@inject(Validation)
export class Form {
constructor(validation) {
this.validation = validation;
this.obj = {
title: '',
description: ''
};
// here we set the rules for our files
this.validation = validation.on(this)
.ensure('obj.title')
.isNotEmpty()
.hasMinLength(2)
.hasMaxLength(120)
.ensure('obj.description')
.isNotEmpty()
.hasMinLength(10)
.hasMaxLength(420);
}
// method will be called when form is submitted
create() {
let _this = this;
this.validation.validate()
.then((validatedFields) => {
// IF IT PASSES VALIDATION... YOU CAN DO STUFF
// WHERE WITH UR obj
console.info(_this.obj)
});
}
}
|
This is how easy is to get some simple validation done. You can go really crazy on the validations that are available. Other methods available range from isEmail(), isBetween(), containsNoSpaces(), containsOnlyAlpha(), isIn(), isGreaterThanOrEqualTo(), and much, much more.
Aurelia used to have a nice page with some examples here, but at the time of this post, probably related to the big changes to aurelia-validation plugin, the page was removed. Hopefully it will return with new updated stuff.
For instant help, you always ask in: https://gitter.im/aurelia/validation