如何使用 Kendo UI 验证器来验证表单内 AngularJS 组件中的输入



>假设我有一个 AngularJS 组件,它为用户呈现输入以输入他们的名字和姓氏,如下所示:

First name: <input ng-model="ctrl.firstName" required /><br />
Last name: <input ng-model="ctrl.lastName" required />

假设该组件称为"名称输入",我将其用作另一种形式的一部分,如下所示:

<form kendo-validator="ctrl.validator">
<name-input></name-input><br />
Quest: <input ng-model="ctrl.quest" required /><br />
Favorite Color: <input ng-model="ctrl.favoriteColor" required
</form>

结果是一个包含四个输入的表单:名字、姓氏、任务和收藏的颜色。

但是,当我调用validator.validate时,我看到只有任务和收藏夹颜色得到验证。 我尝试为名称输入组件声明 Kendo UI 验证器,但它不起作用。 在运行时,在名称输入组件中声明的验证程序是未定义的。

我遇到的唯一看似合理的解决方案是在每个输入上使用validator.validateInput,如下所述:https://www.newventuresoftware.com/blog/code-bites-validate-any-dom-element-with-kendoui-validator

在这种情况下,我想我必须调用validator.validate来验证任务和收藏的颜色,但我必须为名称输入组件中的两个输入调用validator.validateInput两次。

这似乎可以工作,但它非常不干燥。 问题是,如果我在使用此名称输入组件的十种不同形式中使用validator.validateInput,然后在将来将"中间名"输入添加到名称输入中,那么我必须返回并在使用名称输入组件的所有位置添加额外的validator.validateInput调用。

点他的更好方法是什么?

就我而言,为每个输入提供name属性就可以了。

First name: <input name="firstName" ng-model="ctrl.firstName" required /><br />
Last name: <input name="lastName" ng-model="ctrl.lastName" required />

工作示例

如果组件在同一窗体中重复使用,只需将名称作为绑定数据传递到组件中即可。 工作示例

最新更新