我想这意味着有一个循环引用,但是对于我的一生,我无法猜测如何解决它。
有人有主意吗?
http://plnkr.co/edit/aNcBcU?p=预览
检查Chrome中的调试控制台(例如),您将看到错误。冒犯的行是
scope.map = map;
通过以下方式在控制器上对scope.map进行“ $ watched”
$scope.$watch("options.map", function (map) { ... }, true);
这是因为您要比较对象是否相等,而不是参考。将您的$watch声明更改为此:
$watch
$scope.$watch("options.map", function (map) { if (map === undefined) { alert("map has no value"); } else { alert("map is defined"); } });