0

我正在开发热毛巾模板的修改版本以创建 Angular SPA。我正在使用 Breeze 通过 kendo UI 和数据即小部件和图表访问我的数据服务。

我面临与此 SO 帖子Chrome//kendoUI/jQuery: Maximum call stack size exceeded中所述的问题类似的问题。在将我的微风服务输出直接绑定到我的图表时,我在客户端上收到一个最大调用堆栈大小超出错误,并出现“未捕获错误:[$rootScope:infdig] 10 $digest() 迭代次数已达到。Aborting!Watchers 在最后 5 次迭代中触发: [] '

Breeze 结果确实有循环引用,正如上面的链接也表明的那样。在将它绑定到正常的角度范围变量时,我没有收到任何问题,但只有在将它绑定到我的图表时才会出现错误。如链接所示过滤客户端上的数据可能会对性能产生影响。我也尝试了几个替换函数和 JSON.prune,但它们也删除了我需要在图表上显示的数据:(

有没有其他解决方法?

完整的错误粘贴在下面。看起来好像正在为每个属性执行深层复制,但由于存在循环引用,因此最终会引发溢出错误

RangeError: Maximum call stack size exceeded
    at Object.toString (native)
    at isArray (http://localhost:61438/Scripts/angular.js:596:19)
    at isArrayLike (http://localhost:61438/Scripts/angular.js:278:27)
    at forEach (http://localhost:61438/Scripts/angular.js:324:16)
    at copy (http://localhost:61438/Scripts/angular.js:871:7)
    at copy (http://localhost:61438/Scripts/angular.js:858:23)
    at copy (http://localhost:61438/Scripts/angular.js:875:28)
    at copy (http://localhost:61438/Scripts/angular.js:858:23)
    at copy (http://localhost:61438/Scripts/angular.js:875:28)
    at copy (http://localhost:61438/Scripts/angular.js:858:23) angular.js:9778
(anonymous function) angular.js:9778
(anonymous function) angular.js:7216
Scope.$digest angular.js:12270
(anonymous function) angular.js:12450
completeOutstandingRequest angular.js:4300
(anonymous function)

Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.2.16/$rootScope/infdig?p0=10&p1=%5B%5D angular.js:78
(anonymous function) angular.js:78
Scope.$digest angular.js:12290
(anonymous function) angular.js:12450
completeOutstandingRequest angular.js:4300
(anonymous function)
4

1 回答 1

3

发生这种情况是因为 Breeze 实体相互引用,并且大多数供应商网格在绑定时不会停止迭代属性。解决此问题的方法是使用此处描述的投影 -

http://www.breezejs.com/documentation/knockout-circular-references

于 2014-07-12T17:53:52.580 回答