jsTree асинхронный поиск - запуск загрузки новых узлов
У меня есть хорошо работающая реализация jsTree, работающая над моим проектом. Данные JSON предоставляются PHP/Ajax. У меня возникли проблемы при использовании поискового плагина.
Документация поискового плагина jsTree гласит:
поэтому в своем ответе вы должны вернуть путь к узлу (без самого узла) в виде идентификаторов: ["#root_node", "# child_node_3"]
... так, моя функция поиска на стороне сервера возвращает путь к соответствующему узлу, как это так (да, я json_encode
это):
Array( '#1', '#2', '#3', '#5' ); // to match node #10 (leaf node) at the end
Когда эти значения уже существуют в DOM, функциональность поиска на стороне клиента работает нормально, но у меня возникают проблемы с тем, чтобы jsTree следовал маршруту, указанному в этом массиве (или массивах), для заполнения деревьев, когда элементы еще не существуют (например, когда открыт только корневой узел).
Я видел подобные вопросы в стеке, но ни на один из них не было ответов. Я пишу повторно, потому что мне нужно понять, как это работает, и я не нашел много информации за пределами документации по поисковому плагину о том, как использовать jsTree с асинхронным поиском.
По сути, я хочу использовать массив, возвращаемый функцией поиска, для запуска события загрузки jsTree (что-то вроде load_node_json
) - Я бы подумал, что это должно работать прямо из коробки, но у меня проблемы с этим. Я просто подключил пример кода из документации jsTree.
1 ответ
Я понял это. Моя проблема заключалась в том, что я возвращал несколько массивов, содержащих путь к каждому сопоставленному узлу, вот так:
Array(
Array('#root', '#child', '#sub-child'),
Array('#root', '#child', '#second-sub')
)
Как выяснилось, поисковый плагин jsTree A ожидает только одноуровневый массив, а B загрузит все узлы, перечисленные в этом массиве, порядок путей не должен быть совершенно точным, как может указывать документация.
Поэтому вместо этого в моем JSON я возвращаю массив, содержащий уникальные идентификаторы узлов, например:
Array( '#root', '#child', '#sub-child', '#second-sub' )
... и поисковый плагин загружает узлы, как и ожидалось.
Ничего фантастического в конце концов, но я думаю, что документация jsTree должна быть более наглядной по этому вопросу, поскольку я видел других с такой же проблемой и без ответов.