我有一条指令,使用正则表达式验证输入值。
现在,我使用$ watch检查输入值是否已更改,但是由于性能原因,我想尝试另一种方法。

scope.$watch(attrs.ngModel, function (inputValue) {
     formatter(inputValue);
});


格式化程序功能仅通过正则表达式检查inputvalue是否有效,并调用$ setValidity()

我尝试使用$ parsers,但发现更改输入值时,该值未直接验证,如下所示:

modelCtrl.$parsers.push(formatter);
    if (scope[attrs.ngModel] && scope[attrs.ngModel] !== '') {
        formatter(scope[attrs.ngModel]);
    }


输入值更改后,有什么方法可以立即验证输入?

最佳答案

如果您具有用于验证的自定义指令,请使用$ asyncvalidators


Angular official guide

Good article on how to use asyncvalidators


ng-pattern可直接用于标记的正则表达式验证

关于javascript - $ watch的替代品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36477785/

10-12 15:11