Ошибка просмотра в пользовательской директиве angularJs throw error

avatar
tranvinhtrung87
9 августа 2021 в 02:19
68
0
0

Я обновляю свой проект с 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 : {}, в директиву, но тогда функция ошибки не вызывается.

Источник

Ответы (0)