0

Этот проект использует BackboneJS с BackboneLayout.Найти все виды определенного типа, отображаемые в настоящее время в BackboneJS или BackboneLayout

В некоторых случаях существует довольно сложная иерархия представлений - от четырех до пяти уровней.

У меня есть ситуация, когда мне хотелось бы, чтобы один вид вызывал изменение в другом представлении, но слушатели не являются опцией. (приводит к слишком большому количеству слушателей, убивает память).

Top -> X -> Y 
Top -> B -> C -> D -> E 

Top это вид сверху уровень, который имеет один X вид, который имеет несколько Y взглядов. Top вид также содержит один вид B, который содержит несколько изображений B, каждый из которых содержит несколько изображений C, каждый из которых содержит несколько изображений D, каждый из которых содержит несколько изображений E.

Изменение вида Y должно отражать все E виды, которые в настоящее время визуализируются. Это было бы идеально для слушателей, если бы не проблема, упомянутая ранее. Таким образом, я ищу альтернативный способ сделать то же самое.

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

Спасибо.

ответ

0

Да, я бы Top поддерживать список всех E экземпляров - это просто что-то в коде приложения, может быть в E.initialize(), или с помощью собственных методов для добавления/удаления узлов на ваш взгляд иерархией, если вы имейте это - и это собственный обработчик события, который слушает для change событий на всех Ys и повторно отображает E s. Если вам небезразлично слушать изменения Y, активируйте пользовательское событие Y-change (или что-то еще) на вашем Top из вашего кода приложения в Y и попробуйте Top прослушать это событие.

Очень просто, чтобы список экземпляров E не синхронизировался, но, вот почему слушатели существуют. Протестируйте внимательно и убедитесь, что Top имеет крючки в каждой точке вниз по дереву B->C->D->E и знает, какие изменения внести в его (по существу денормализованный) список E, когда произойдут изменения.