Это веб-страница JavaScript / Ajax (также использующая jQuery).
У меня есть вложенная структура, которую нужно отобразить. После отображения элемента верхнего уровня пользователи могут щелкнуть по нему и увидеть уровни под ним (динамически генерируемые).
Я не хочу предварительно генерировать все и скрывать это с помощью display: none (страница сложная, я упрощаю этот вопрос) - я хочу построить отображение из массива javascript, который был извлечен с помощью ajax .
Мой вопрос:
У меня есть два варианта:
1: создать плоский массив:
[ {id: xx, children: [ xx, xx, .. ] }, ....]
Затем для щелчка элемента я получаю идентификатор из массива, нахожу детей, вытаскиваю их из массива и отображаю их. (Думаю, мне придется искать в массиве, поскольку в javascript нет ассоциативных массивов - или составить индекс.)
2: создать вложенный массив:
{ id: xx, children [ { id: xx, children : [....] }, {....} ] }
Затем каким-то образом привязать дочерние элементы в массиве к элементу, когда я его отображу
У меня есть две проблемы с этим вторым подходом:
A: Я постоянно копирую большие куски массива для каждого дочернего элемента при его создании. (По крайней мере, я так думаю. Нужно ли использовать глубокое копирование? Могу ли я сделать ссылку?)
B: Я не уверен, как связать данные с дочерним элементом. Обычно я строю отображение, используя строки html с помощью onClicks, а затем добавляю все это. Но onClicks может принимать только идентификатор, а не копию массива.