Я работаю над модифицированной версией шаблона Hot Towel для создания Angular SPA. Я использую Breeze для доступа к своим службам данных с пользовательским интерфейсом кендо и визуализацией данных для виджетов и диаграмм.
Я столкнулся с проблемой, аналогичной указанной в этом сообщении SO Chrome/ /kendoUI/jQuery: превышен максимальный размер стека вызовов. При привязке вывода моей службы breeze непосредственно к диаграмме я получаю сообщение Максимальный размер стека вызовов превышен на клиенте с сообщением «Неперехваченная ошибка: [$rootScope:infdig] 10 итераций $digest() достиг. Aborting!Watchers запущены за последние 5 итераций: []'
Результаты Breeze имеют циклические ссылки, на что также указывает приведенная выше ссылка. У меня нет проблем с привязкой этого к обычным переменным области видимости angular, но ошибка возникает только при привязке этого к моим диаграммам. Фильтрация данных на клиенте, как предполагает ссылка, вероятно, повлияет на производительность. Я попробовал пару функций-заменителей и 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)