每当我在我的作用域上触发$apply
时,就会抛出太多的递归错误。
控制台输出:
Error: too much recursion
isArray@file://.../lib/angular.js:355:10
copy@file://.../lib/angular.js:551:9
copy@file://.../lib/angular.js:546:23
copy@file://.../lib/angular.js:563:28
...
Error: 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
$RootScopeProvider/this.$get</Scope.prototype.$digest@file://.../lib/angular.js:7756:19
$RootScopeProvider/this.$get</Scope.prototype.$apply@file://.../lib/angular.js:7926:13
答案 0 :(得分:0)
递归错误太多
如果导致angularjs上的copy
方法,则您的数据会互相循环引用。
:
// you define your objects
var lot = new Lot();
var car = new Car();
// you assign create a relation to it
car.assign( lot );
lot.assign( car );
// lets assume that the data on the objects are like this
car; // {'lot':lot}
lot; // {'car':car}
当$apply()
被触发时,无论是调用它还是角度调用它,它都会在某处调用copy
方法。
copy
会发生什么事情,就是复制每个属性及其可复制的任何内容。当应用于上面的数据时,如果没有停止,它将永远重复。
这会导致浏览器停止并引发Too much recursion
错误。
<强>解决方案:强>
仅获取渲染元素所需的数据。 只传递给所需的数据。
使用上面的示例代码,
var reduced = {'plate':car.get_plate(),'lot':car.get_lot_location()};
my_scope.addCar( reduced );
提示自己:在调试时使用未经编译的库版本。 :)