Я написал директиву multiple-pattern
проверки, которая принимает несколько проверки регулярных выражений:.
link: function (scope, elm, attr, ctrl) {
if (!ctrl) return;
let validators = [];
attr.$observe('multiplePattern', function (patterns) {
// doesn't get there after value change
var parsed = scope.$eval(patterns);
, но я не понимаю, почему $observe
обратного вызова не срабатывает, когда переменная на контроллере validationRegexps
изменяется (обратный вызов нг повтора в срабатывает, когда regexp
переменная изменена):
$scope.regexp = '^\\S*$';
$scope.validationRegexps = {'nospaces': '^\\S*$', 'nofirstnumber': '^[A-Za-z]'};
setTimeout(function() {
$scope.$apply(function() {
$scope.regexp = '[^abc]';
$scope.validationRegexps = {'noabc': '[^abc]'};
})
}, 5000);
Использование:
<div ng-pattern="regexp" multiple-pattern="validationRegexps"></div>
Почему вы не используете 'scope: {multiplePatterns: '='}'? –
в двух словах: attrs - строка, вы наблюдаете строковые изменения, вы передаете строку _validationRegexps_, эта строка не изменяется, поэтому обратный вызов не запускается – Grundy
@ DanielA.White, потому что моя директива не создает изолированную область. –