2013-06-27 2 views
0

Я создал древовидную структуру в Javascript, которая, к сожалению, содержит круглые ссылки. (Объекты имеют массив детей, но детям нужны ссылки на родителя для целей удаления.)

Из-за древовидной структуры я использую угловые глубокие часы для обнаружения любых изменений в дереве. (Это позволяет избежать просмотра каждого узла дерева.) Однако круговые ссылки вызывают проблемы с конструкцией часов Angular $. Я не вижу способа справиться с проблемой родителя/ребенка без ссылок на родителей из-за некоторых требований к дизайну моего приложения.

Одна вещь, которую я рассмотрел, это сохранение ссылки на родителя в качестве прототипа. Мой вопрос - Угловые глубокие $ watch смотрят на прототип элементов пользовательского объекта? Есть ли настройка для этого где-то?

Спасибо.

ответ

0

Другое возможное решение: сравнение углового глубокого объекта игнорирует функции и поля, начинающиеся с $.

http://docs.angularjs.org/api/angular.equals

Так, очевидно, угловой использует $ для хранения собственных метаданных, но вы должны быть хорошо с чем-то вроде OBJ. $ My_parent. Или вы можете просто назначить все с помощью функции ... obj.parent = function() {return other_obj; }

+0

Использование '' 'не работает, как я надеялся, по разным причинам, но используя функцию. Мне пришлось укусить пулю и создать класс вместо обычного объекта, и это то, что мне нужно было сделать в любом случае ... Я просто надеялся на быстрое обходное решение в ожидании более позднего рефактора. –