Я написал директиву в angular, которая принимает формат даты ISO8601 в качестве входных данных и преобразует его в объект после анализа. Затем я добавил наблюдатель для переменной, которая при изменении вызывает следующую функцию.
scope.$watch(scope.ngModel, function () {
scope.setTimeFromIsoString(scope.ngModel);
}, true);
scope.setTimeFromIsoString = function(value) {
if (!value) {
return;
}
const match = scope.regex.exec(value);
..............
//Some LOGIC & then return object
}
Теперь проблема в том, что если scope.ngModel начинается с некоторого числа, отличного от c, то функция, выполняемая ниже, выполняется, но если оно начинается с цифры c, оно выдает некоторую ошибку, для например, ngModel="12Mins"
, это не удается. но если ngModel="P12Y"
, это хорошо работает.
PS: поле ввода: цифра c (в частичной директиве)
Ошибка:
Ошибка: [$ parse: синтаксис] Синтаксическая ошибка: токен 'mins' является неожиданным токеном в столбце 3 выражения [12mins], начинающегося с [mins]. http://errors.angularjs.org/1.6.9/ $ parse / синтаксис? P0 = mins & p1 = is% 20an% 20 неожиданно% 20token & p2 = 3 & p3 = 12mins & p4 = mins
at angular.js:116
at AST.throwError (angular.js:15358)
at AST.ast (angular.js:15108)
at Parser.getAst (angular.js:16467)
at Parser.parse (angular.js:16450)
at $parse (angular.js:16608)
at Scope.$watch (angular.js:17923)
at Object.link (schemaDirective.js:29)
at angular.js:1383
at angular.js:10613 "<div class="durationpicker ng-pristine ng-untouched ng-valid ng-isolate-scope"
ng-model="schemaFormObj.dataModel.initialForm[ifobj.model]">"
Спасибо за ваши ответы заранее.