jsTree AJAX поиск с некоторыми дочерними узлами?

Я пытаюсь реализовать поиск ajax в jsTree, но только внутри одного корневого узла.

Я прочитал документы и нашел информацию о:

$.jstree.defaults.search.ajax

Параметр str (который является строкой поиска) будет добавлен с запросом, дополнительный внутренний параметр будет добавлен, если поиск ограничен идентификатором узла.

Мой конфиг ПОИСК AJAX:

        "search": {
        // search config
        "show_only_matches": true,
          'ajax': {
            'url': "/ajax/root-nodes"
          }
        },

jsSearch call:

$tree.jstree(true).search(searchText);

Я также использую ленивую загрузку подузлов.

Кто-нибудь делает что-то подобное?

1 ответ

Решение

В своем звонке вы не ограничиваете поиск конкретным узлом:
http://www.jstree.com/api/#/?q=search%28&f=search%28str%20[,%20skip_async]%29

Если, например, ваш идентификатор корневого узла - "root1", используйте это:
$tree.jstree(true).search(searchText, false, true, 'root1');

Однажды search функция вызывается, AJAX-запрос будет сделан согласно вашей конфигурации. Так что в вашем случае, если пользователь искал "foo" - это будет запрос GET с двумя параметрами - str а также inside:
GET /ajax/root-nodes?str=foo&inside=root1

Ваш ответ должен быть массивом JSON, содержащим все уникальные родительские идентификаторы, которые необходимо загрузить (и открыть). Возможно, вы захотите построить этот массив, выполнив поиск на стороне сервера, собрав родителей каждого совпадения, а затем объединив их в массив (и оставив только уникальные записи):
["root1","somenode"]

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