本文介绍了集中Aurela验证逻辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望将验证逻辑集中在@Enure中,但我不确定如何做到这一点。这是文档中的一个示例:
import {Validation} from 'aurelia-validation';
import {ensure} from 'aurelia-validation';
export class Person {
static inject() { return [Validation];}
//I want to inject validation logic here instead of using function(it){...}
@ensure(function(it){ it.isNotEmpty().hasLengthBetween(3,10) })
firstName = 'John';
constructor(validation) {
this.validation = validation.on(this);
}
}
我想将上面的代码更改为如下所示:
import {Validation} from 'aurelia-validation';
import {ensure} from 'aurelia-validation';
import {UserValidation} from 'user/userValidation'; //custom validation logic here
export class Person {
static inject() { return [Validation];}
//can I do something like this instead of using function(it){...}?
@ensure(UserValidation.firstName)
firstName = 'John';
constructor(validation) {
this.validation = validation.on(this);
}
}
如果我们只需要在一个页面上收集名字,那么我们根本不必这样做,但由于我们可能需要让用户在多个不同的页面上输入他们的名字,所以我们希望将验证逻辑集中在某个地方,这样我们就不必将其复制和粘贴到任何地方。我们也不想创建"名字组件",因为每个页面上的UI都不同,所以我们只想重用验证逻辑。
更新:我在Aurela讨论中问了这个问题,并被要求尝试以下方法。
//userValidation.js
export function firstName(it){ it.isNotEmpty().hasLengthBetween(3,10)};
import {Validation} from 'aurelia-validation';
import {ensure} from 'aurelia-validation';
import * as userValidation from 'user/userValidation';
export class Person {
static inject() { return [Validation];}
@ensure(userValidation.firstName)
firstName = 'John';
constructor(validation) {
this.validation = validation.on(this);
}
}
但我收到此错误:未处理的承诺拒绝错误:实例化人员时出错。你知道我该怎么解决这个问题吗?
推荐答案
实际上,以下代码起作用了!
//userValidation.js
export function firstName(it){ it.isNotEmpty().hasLengthBetween(3,10)};
//person.js
import {Validation} from 'aurelia-validation';
import {ensure} from 'aurelia-validation';
import * as userValidation from 'user/userValidation';
export class Person {
static inject() { return [Validation];}
@ensure(userValidation.firstName)
firstName = 'John';
constructor(validation) {
this.validation = validation.on(this);
}
}
这篇关于集中Aurela验证逻辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!