Я создал древовидное меню навигации с помощью Dynatree (http://wwwendt.de/tech/dynatree/index.html). Дерево имеет четыре уровня: компания, группа, пользователь и компьютер. Каждый объект в дереве доступен для выбора (при выборе объекта открывается страница, отображающая свойства этого объекта), и каждый объект может иметь дочерние объекты, за исключением объектов уровня 4 («компьютер»).
Теперь я попытался сделать дерево загруженным в соответствии с инструкциями в документации: http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#lazyLoading
Для содержимого первого уровня, загружаемого из фона, для параметра isLazy установлено значение true, и я добавил обратный вызов onLazyRead в дерево.
Что мне нужно из дерева: первый уровень всегда загружается, но расширение объекта первого уровня с помощью символа [+] расширяет объект первого уровня и загружает базовые объекты (группа, пользователь, компьютер) в фоновом режиме. Загрузка дерева работает в том смысле, что я вижу элементы первого уровня, но проблема в том, что
- знак [+] не отображается, если у узла нет дочерних элементов
- если у узла есть дочерние элементы, событие onLazyRead не выполняется
Это похоже на уловку-22, так как, похоже, нет возможности сделать узел расширяемым, если у него нет дочерних элементов, что делает невозможной загрузку дерева. Чего мне не хватает?