Как использовать Kendo UI validator для проверки входных данных внутри компонента AngularJS внутри формы - PullRequest
0 голосов
/ 08 октября 2018

Предположим, что у меня есть компонент 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 для компонента ввода имени, но он не работает.Во время выполнения валидатор, объявленный внутри компонента «Ввод имени», не определен.

Единственное решение, с которым я столкнулся, кажется разумным, - это использовать validator.validateInput на каждом входе, как описано здесь: https://www.newventuresoftware.com/blog/code-bites-validate-any-dom-element-with-kendoui-validator

В этом случае, я думаю, мне нужно будет вызвать validator.validate для проверки Quest и Favorite Color, но мне придется дважды вызывать validator.validateInput для двух входов внутри компонента Name Input.

Кажется, это может сработать, но это очень НЕ СУХОЙ.Проблема заключается в том, что если я использую validator.validateInput в десяти различных формах, которые используют этот компонент ввода имени, а затем в будущем я добавлю ввод «среднего имени» к вводу имени, тогда я должен вернуться и добавить дополнительный validator.validateInput вызов везде, где я использовал компонент ввода имени.

Как лучше его расставить точки?

1 Ответ

0 голосов
/ 22 мая 2019

В моем случае назначение атрибута name каждому входу поможет.

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

Рабочий пример

Если компонентиспользуется многократно внутри одной и той же формы, просто передайте имя в качестве связывающих данных в компонент. Рабочий пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...