Я пытаюсь создать директиву для элемента input
, который будет динамически создавать ng-pattern
для проверки действительного IP-адреса в поле ввода. Все мои попытки сделать это были полностью безуспешны. Хотя я могу динамически изменять другие атрибуты, я не могу создать ng-pattern
, который повлияет на статус $valid
.
Вот код, над которым я работал, кажется, что он должен работать, но он ничего не делает с ng-pattern
.
app.directive('ipAddress', function($parse) {
return {
link: function(scope, element, attrs) {
var model = $parse(attrs.ngPattern);
model.assign(scope, "/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/");
scope.$apply();
};
});
Директива:
<input ng-model="ip" ip-address required type="text" id="inputIP" placeholder="xxx.xxx.xxx.xxx">
Да, я знаю, что могу просто указать встроенный ng-pattern
с тегом <input>
, но дело в том, что я хочу иметь возможность делать это динамически в коде, и я хотел бы, чтобы тег <input>
был чище, не встраивая кучу код регулярного выражения там.
Кто-нибудь может мне помочь, пожалуйста! Спасибо!