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 должна быть более наглядной по этому вопросу, поскольку я видел других с такой же проблемой и без ответов.

Другие вопросы по тегам