Error: [ng:cpws] in formController with deep watching - angularJS 1.8.0
Error: [ng:cpws] in formController with deep watching - angularJS 1.8.0
我有一个带有子控件(输入和文本区域)的 formController 的简单场景。当我使用深度观察者(objectEquality
等于 true)来检查整个表单的变化时,我得到 Error: [ng:cpws]
这是基本代码(使用最新的angularJS):
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-forms-simple-production</title>
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
</head>
<body ng-app="formExample">
<div ng-controller="ExampleController">
<form novalidate class="simple-form" name="formContent">
<label>Name: <input type="text" ng-model="user.name" /></label><br />
<label>Description: <textarea ng_model="user.description"></textarea></label><br />
</form>
<pre>user = {{user | json}}</pre>
</div>
<script>
angular.module('formExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.master = {};
$scope.$watch(() => $scope.formContent, (newValue, oldValue) => {
console.log('new ', newValue);
console.log('old ', oldValue);
}, true);
}]);
</script>
</body>
</html>
控制台中的问题是:
angular.js:15697 Error: [ng:cpws] http://errors.angularjs.org/1.8.2-build.2468+sha.9b3b6f7f7/ng/cpws
at VM469 angular.min.js:7
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:13)
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:12)
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:13)
at e (VM469 angular.min.js:13)
at Ia (VM469 angular.min.js:15)
at m.$digest (VM469 angular.min.js:153)
我不完全明白表单对象中的哪个属性导致了这个问题。根据 angularJS 文档,这可能是由于循环和自引用引起的
plunker 中的实时代码:https://plnkr.co/edit/B9n7GAPkZvzsFbKN?preview
这里解释这个问题的原因:Unintended breaking change when passing ngModel as a binding
基本上,(自 9e24e77 起)我们将范围放在 NgModelController 实例上,因此不再可能复制此类实例(这在 $watching 时发生在幕后)。
我有一个带有子控件(输入和文本区域)的 formController 的简单场景。当我使用深度观察者(objectEquality
等于 true)来检查整个表单的变化时,我得到 Error: [ng:cpws]
这是基本代码(使用最新的angularJS):
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-forms-simple-production</title>
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
</head>
<body ng-app="formExample">
<div ng-controller="ExampleController">
<form novalidate class="simple-form" name="formContent">
<label>Name: <input type="text" ng-model="user.name" /></label><br />
<label>Description: <textarea ng_model="user.description"></textarea></label><br />
</form>
<pre>user = {{user | json}}</pre>
</div>
<script>
angular.module('formExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.master = {};
$scope.$watch(() => $scope.formContent, (newValue, oldValue) => {
console.log('new ', newValue);
console.log('old ', oldValue);
}, true);
}]);
</script>
</body>
</html>
控制台中的问题是:
angular.js:15697 Error: [ng:cpws] http://errors.angularjs.org/1.8.2-build.2468+sha.9b3b6f7f7/ng/cpws
at VM469 angular.min.js:7
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:13)
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:12)
at e (VM469 angular.min.js:13)
at c (VM469 angular.min.js:13)
at e (VM469 angular.min.js:13)
at Ia (VM469 angular.min.js:15)
at m.$digest (VM469 angular.min.js:153)
我不完全明白表单对象中的哪个属性导致了这个问题。根据 angularJS 文档,这可能是由于循环和自引用引起的
plunker 中的实时代码:https://plnkr.co/edit/B9n7GAPkZvzsFbKN?preview
这里解释这个问题的原因:Unintended breaking change when passing ngModel as a binding 基本上,(自 9e24e77 起)我们将范围放在 NgModelController 实例上,因此不再可能复制此类实例(这在 $watching 时发生在幕后)。