gpt4 book ai didi

angularjs - $watch 带有循环引用的对象时抛出错误

转载 作者:行者123 更新时间:2023-12-02 03:31:36 25 4
gpt4 key购买 nike

当 $watch 一个带有循环引用的对象时,例如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>

最佳答案

您可以在 watch 中指定自定义功能。例如

$scope.$watch(function() {
//custom equality handler, return a value that when changed will fire the handler
}, function(newVal) {
console.log('complex changed');
});

关于angularjs - $watch 带有循环引用的对象时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26321140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com