в угловых 1.2 можно было использовать нг-шаблон следующим образом:Генерировать регулярное выражение для нг-шаблона в угловых 1,5
<input ng-model="myModelVar" ng-pattern="myModelRegex" />
, где myModelRegex может быть что-то вроде: /^[a]+$/i
для случая нечувствительного матча по ряду от a
. Начиная с AngularJS 1.5, поведение изменилось (как показано в их документации: see here).
То, что я хочу достичь, это что-то вроде:
$scope.testRegex = '^[a]+$';
$scope.generateRegex = function(modelVar) {
return new RegExp(modelVar, 'i');
}
с:
<input ng-pattern="generateRegex(testRegex)" name="testInput3" ng-model="testVar3" />
Итак, мой регулярное выражение на самом деле переменная модель, и питается от внешнего источника. Не имеет значения, что люди могут его изменить, бэкэнд также фильтрует это.
Пример выше «работает», но вызывает ошибку infDigest
. См. Мой jsFiddle: https://jsfiddle.net/t0nfurjb/
Что мне нужно сделать, чтобы исправить это?
[EDIT]
Таким образом, чтобы уточнить, я веб-вызов, который возвращает мне что-то вроде этого:
[
{
caption: "Please enter your mail address";
regex: [a-z][email protected][a-z]+.[a-z]+
},
{
caption: "Please enter your phone number";
regex: [0-9]{10}
}
]
И я хочу, чтобы использовать предоставленные регулярные выражения, на мой взгляд.
Примечание: регулярные выражения создаются на месте и никогда не должны когда-либо использоваться в реальных системах.
Спасибо за ответ, к сожалению, это не будет работать для моего сценария, потому что он фактически используется в ng-повторе. Таким образом, я не могу просто использовать глобальную переменную. – Yuri
Выполняют ли все элементы в шаблоне ng-repeat один и тот же шаблон проверки с помощью директивы ng-pattern? Если все элементы будут иметь одинаковый шаблон проверки, то использование общей переменной лучше, чем сохранение каждого шаблона в свой собственный элемент модели в массиве. –
Нет, это вещь вещь. – Yuri