javascript - Hur får man Aurelia-valideringar att fungera?
Jag började med http://aurelia.io/hub.html#/doc/article/aurelia/validation/latest/validation-basics/1
Försökte sedan http://blog.durandal.io/2016/06/14/new-validation-alpha-is-here/
Dock sker inte validering vid blur som förväntat. Även om jag kallar validate på kontrollern, sätts inte felen.
login.ts
import {inject, NewInstance} from 'aurelia-dependency-injection';
import {ValidationController} from 'aurelia-validation';
import {ValidationRules} from 'aurelia-validatejs'
@inject(NewInstance.of(ValidationController))
export class Login {
email:string;
password:string;
controller = null;
constructor(controller){
this.controller = controller;
}
submit = () => {
this.controller.validate().then((res) => console.log(res)).catch((e) =>console.log(e));
};
}
ValidationRules
.ensure('email').required()
.on(Login);
login.html
<form submit.delegate="submit()">
<div class="form-group">
<label for="email" class="control-label required">Email</label>
<input class="form-control" value.bind="email & validate" type="email" id="email">
</div>
<div class="form-group">
<label for="password" class="control-label required">Password</label>
<input class="form-control" value.bind="password & validate" type="password"
id="password">
</div>
<div class="form-group">
<input id="remember_me" name="remember_me" type="checkbox" value="1">
<label for="remember_me" class="control-label">Remember me</label>
</div>
<div class="form-group">
<button class="btn btn-primary btn-block" type="submit">Login</button>
</div>
</form>
aurelia.json
{
"name": "aurelia-validation",
"path": "../node_modules/aurelia-validation/dist/amd",
"main": "aurelia-validation"
},
{
"name": "validate.js",
"path": "../node_modules/validate.js",
"main": "validate"
},
{
"name": "aurelia-validatejs",
"path": "../node_modules/aurelia-validatejs/dist/amd",
"main": "aurelia-validatejs"
},
main.ts
aurelia.use
.standardConfiguration()
.plugin('aurelia-validation')
.plugin('aurelia-validatejs')
.feature('resources');
Svar #1
Från och med version 0.12 beroende aurelia-validation inte längre på validate.js. Det verkar som att du fortfarande använder ValidationRules från ett borttaget beroende. Byt helt enkelt
import {ValidationRules} from 'aurelia-validatejs'
till
import {ValidationRules} from 'aurelia-validation'
Förresten: Du kan helt ta bort aurelia-validatejs och validatejs från dina projektberoenden.
Svar #2
Du behöver skapa valideringsreglerna inuti din klass, förmodligen i attached-metoden, och du vill skicka this istället för Login. Det bör se ut så här:
attached(){
ValidationRules
.ensure('email').required()
.on(this);
}
