我正在尝试将单个aurelia验证与表单中的一组属性进行匹配。例如。在映射到表中的行的对象数组中具有属性名称ssid
的每个字段。验证文档说,ensure子句可以有一个property expression
,听起来就像我需要的那样。我正在使用
{ValidationRules, ValidationController} from 'aurelia-validation';
我已经使用
为单个属性进行了验证 ValidationRules.ensure('apPwd').displayName('XY AP Password').maxLength(32).minLength(8).on(this);
其中apPwd是属性表达式。
但我无法找到任何属性表达式的规范。 aurelia docs中的大多数示例只显示一个属性名称。我见过的最复杂的事情是与|
或&
(无论是什么)一起传输的东西。
有人能指出我的具体问题的规格或帮助吗?或者也许我应该放弃这个包并滚动我自己的代码?
答案 0 :(得分:0)
我认为这可以帮到你:
这是validate.ts
import { autoinject } from 'aurelia-framework';
import { ValidationRules, ValidationController } from 'aurelia-validation';
@autoinject
export class Validate {
numberField: number;
controller: any;
constructor (
private validationController: ValidationController
) {
this.controller = validationController;
ValidationRules.customRule(
'nummer',
(value, obj, min, max) => {
let numberValue: number = parseInt(value);
return value === null || value === undefined || Number.isInteger(nummer) && nummer >= min && nummer <= max;
},
`\${$displayName} must be an integer between \${$config.min} and \${$config.max}.`,
(min, max) => ({ min, max })
);
ValidationRules
.ensure((m: this) => m.numberField)
.required()
.withMessage('Rutan får inte vara tom.')
.satisfiesRule('nummer', 1, 100)
/*.satisfies((value: any, object?: any) => {
console.log(value);
if (value >= 1 && value <= 100) {
return true;
}
else {
return false;
}
})
.withMessage(`The number must be between - 100.`)*/
.ensure((m: this) => m.numberField).required()
.on(this);
}
submit(): void {
this.executeValidation();
}
executeValidation(): void {
this.controller.validate()
.then(errors => {
if (errors.length === 0) {
console.log('all good!');
} else {
console.log('all errors!');
}
});
}
}
这是validate.pug(在我的情况下,如果你愿意,你可以使用html页面)
template
section.au-animate
h2 Validate
form(role="form")
.form-group
label Number
input#meetingSubject.form-control(type="text" value.bind="numberField & validate")
button.btn.btn-lg.btn-primary(click.delegate='submit()') Validate
div
h3 ${'latestValidationResult'}
ul(if.bind='controller.errors.length')
li(repeat.for='error of controller.errors') ${error.message}
答案 1 :(得分:0)
不确定我是否理解了您的问题,但我认为您正在寻找ensureObject
:
ValidationRules
.ensureObject()
.satisfies(obj => {
return obj.property1 === 'test' && obj.property2.indexOf('test2') !== -1
})
.withMessage('Some error message.')
.on(this);