一尘不染

RangeError:超出最大调用堆栈大小

angularjs

我想这意味着有一个循环引用,但是对于我的一生,我无法猜测如何解决它。

有人有主意吗?

http://plnkr.co/edit/aNcBcU?p=预览

检查Chrome中的调试控制台(例如),您将看到错误。冒犯的行是

 scope.map = map;

通过以下方式在控制器上对scope.map进行“ $ watched”

$scope.$watch("options.map", function (map) { ... }, true);

阅读 356

收藏
2020-07-04

共1个答案

一尘不染

这是因为您要比较对象是否相等,而不是参考。将您的$watch声明更改为此:

$scope.$watch("options.map", function (map) {
    if (map === undefined) {
        alert("map has no value");
    } else {
        alert("map is defined");
    }
});
2020-07-04