Я нашел много примеров следующего шаблона для входов html, это для телефонных номеров:
<input type="text" ng-model="CellPhoneNumber" required ng-pattern="/^[0-9]+$/" ng-minlength="10" />
Я хотел бы создать настраиваемую директиву, которая, когда будет применена, сообщит Angular применить все три этих правила, например:
<input type="text" ng-model="CellPhoneNumber" bk-ng-validation="phoneNumber"/>
Тогда код в моей директиве найдет и вызовет функцию под названием phoneNumber
, в которой я хотел бы увидеть что-то вроде:
Листинг 1:
function bkNgPhoneNumber(model) {
// This is purely SPECULATIVE pseudo-code, just to convey an idea.
model.errors.add(applyMinLength(10, model));
model.errors.add(applyMaxLength(15, model));
model.errors.add(applyPattern("/^[0-9]+$/", model));
}
Я предпочел бы вышеупомянутый подход по поводу "переписывания кода для этих правил, например:
Листинг 2:
function phoneNumber(model) {
if (model.length < 10 || model.length > 15) {
model.errors.add("Must be 10 to 15 chars!");
}
}
Я не хочу избавляться от всех директив, основанных на атрибутах, но предпочтительно создавать директиву "macro", которая будет вызывать мой код листинга 1, который будет использоваться для вызова нескольких более "микро" проверок.