gpt4 book ai didi

Aurelia 验证嵌套对象

转载 作者:行者123 更新时间:2023-12-05 04:11:08 25 4
gpt4 key购买 nike

我正在尝试验证 Aurelia ViewModel 的对象属性。

View 模型

@autoinject
class AddUserForm {
user: User;
controller: ValidationController;

constructor(controllerFactory: ValidationControllerFactory) {
this.controller = controllerFactory.createForCurrentScope();
}

validate() {
this.controller.validate.then(res => {
console.log(res.valid);
})
}
}

ValidationRules
.ensure((u: User) => u.id).displayName('User').required()
.on(AddUserForm)

View 模型 -> View

<template>
<form click.trigger="validate()">
<input type="text" value.bind="user.id & validate" />
</form>
</template>

用户

class User {
id: string
}

我遇到的问题是验证器没有选取嵌套的用户对象。我错过了让这个工作的东西吗?我读了docs看起来这应该可行。我使用的是 ^1.0.0 版本的插件。

最佳答案

问题出在您的 ValidationRules 中:

ValidationRules
.ensure((u: User) => u.id).displayName('User').required()
.on(AddUserForm)

需要

ValidationRules
.ensure((u: User) => u.id).displayName('User').required()
.on(User)

然后为了让 Controller 运行此规则,您需要在 value.bind 的某处包含“& validate”该属性,如下所示:

<input value.bind="user.id & validate" />

或者在调用 controller.validate() 之前,像这样将整个对象添加到 Controller :

this.controller.addObject(this.user);

我一直使用 .addObject ,因为它会导致对未包含在标记中的属性运行验证,我发现我更喜欢那样。

关于Aurelia 验证嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43298280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com