当$观察带有循环引用的对象时,例如x.y = y; y.x = x;
错误:抛出过多的递归。请参阅下面的代码。
如何自定义$ watch行为?或创建自定义' equals()'对象的功能?
<!DOCTYPE html>
<html>
<body>
<div ng-app="" ng-controller="testController">
{{complex .v}},{{complex.y.v}}
</div>
</body>
<script>
function testController($scope) {
var x = { v: 5, y: null };
var y = { v: 6, x: x };
x.y = y; // <---------------- circlular ref
$scope.$watch('complex', function(newVal){
}, true);
$scope.complex = x;
}
</script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
</html>
答案 0 :(得分:1)
您可以在手表中指定自定义功能。 E.g。
$scope.$watch(function() {
//custom equality handler, return a value that when changed will fire the handler
}, function(newVal) {
console.log('complex changed');
});