2014-10-22 2 views
3

У меня есть график объектов javascript, содержащий циклические ссылки. Когда я использую этот объект в угловатом, светлячок дает мне следующее сообщение об ошибке (далее «...» содержит более 100 дубликат той же линию, предшествующую и последующей его):метод угловых равных не работает из-за «слишком много рекурсии»

Error: too much recursion [email protected]://localhost:8080/ops/bower_components/angular/angular.js:995:1 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:997:15 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:997:15 
... 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:997:15 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:984:17 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:997:15 
$RootScopeProvider/this.$get</[email protected]://localhost:8080/ops/bower_components/angular/angular.js:12491:1 
$RootScopeProvider/this.$get</[email protected]://localhost:8080/ops/bower_components/angular/angular.js:12762:13 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:8357:34 
[email protected]://localhost:8080/ops/bower_components/angular/angular.js:8571:7 
createHttpBackend/</[email protected]://localhost:8080/ops/bower_components/angular/angular.js:8514:1 

Есть ли способ сказать угловым считать объекты равными, если они соответствуют уровням X в глубину? Или угловые просто не работают с циклическими ссылками?

Предыстория (в случае, если вы хотели знать)

У меня были проблемы с поиском решения в Джексоне, который бы не сериализовать объекты, которые уже появились на определенном пути обхода. Похоже, это должно быть довольно прямолинейно, но я думаю, что функциональности не существует. Вот когда я наткнулся на jsog в this answer, что позволило мне перенести мой граф объектов (w/круговые зависимости) на javascript. Я был очень рад, что jsog сделал это для меня, но потом я столкнулся с вышеупомянутой ошибкой.

ответ

-1

AngularJs имеет хороший интерфейс для равных, я предлагаю взглянуть: https://docs.angularjs.org/api/ng/function/angular.equals

angular.equals(o1, o2); 

Это глубокие поиски, однако я не уверен, что это может быть изменен Также здесь является то, что описывает производительность угловых. http://jsperf.com/angular-equals

2

Оказывается, что угловой не поддерживает круговые ссылки в методе равных. Я разветвил его, совершил исправление и отправил запрос на перенос. Затем я узнал, что подобные исправления уже были рассмотрены, но отклонено из-за проблем с производительностью или совместимости с браузером. Для моего проекта я не забочусь о совместимости с браузером, поэтому я буду использовать свою собственную исправленную версию углового для поддержки круговых ссылок.

тянуть обсуждение запрос здесь: https://github.com/angular/angular.js/pull/9762#issuecomment-60282505

мерзавец вилки здесь: https://github.com/andersonbd1/angular.js

Смежные вопросы