Я обновляю свой проект с AngularJS 1.4.4 до последней версии 1.8.2.
Все работает правильно, пока я не обновлюсь до 1.6.0.
В 1.6.0 я получаю следующую ошибку:
Error: [ng:cpws] http://errors.angularjs.org/1.6.0/ng/cpws
H/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:6:425
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:12:200
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:12:7
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:12:306
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:11:397
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js:12:306
При обновлении до 1.6.10
Однако при обновлении до 1.7.0 или 1.8.0 я получаю следующую ошибку:
Error: [ng:cpws] http://errors.angularjs.org/1.8.0/ng/cpws
Angular 43
angular.js:15635:15
Error: [$rootScope:infdig] http://errors.angularjs.org/1.8.0/$rootScope/infdig?p0=10&p1=%5B%5D
Angular 35
angular.js:15635:15
Uncaught Error: [$rootScope:infdig] http://errors.angularjs.org/1.8.0/$rootScope/infdig?p0=10&p1=%5B%5D
Angular 35
Я не понимаю, почему это происходит.
Вот мой код:
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script>
<body>
<div ng-app="app">
<div class="parent" ng-controller="MainCtrl" >
<form novalidate name="updateNumberForm" my-directive >
<label for="number">Please input (5 char max).</label>
<input id="number" type="text" ng-model="vm.number" name="number" ng-maxlength="5">
<button type="button" ng-disabled="updateNumberForm.$invalid">Next </button>
</form>
</div>
</div>
<script>
var app = angular.module("app", []);
app.controller("MainCtrl", function( $scope ){ });
app.directive("myDirective", function(){
return {
restrict: 'A',
link: function (scope, elm, attrs) {
scope.$watch('updateNumberForm.$error', function (errors, prevErrors) {
angular.forEach(errors, function (detailsArray, errorType) {
angular.forEach(detailsArray, function (error) {
if (error.$dirty && error.$invalid) {
console.log('Error field: ' + error.$name);
}
});
});
}, true);
}
}
});
</script>
</body>
</html>
Нет ошибки, если я добавлю scope : {},
в директиву, но тогда функция ошибки не вызывается.