jstree с плагином поиска и массовой загрузки ajax

Я пытаюсь заставить плагин massload работать с моей конфигурацией jstree. Узлы построены как Country->City->Site->Product->License, Когда дерево загружается изначально, загружаются только узлы верхнего уровня (в моем случае Страны). Когда пользователь расширяет узел, дочерние элементы загружаются с использованием ajax. У меня есть окно поиска, которое ищет в дереве, это работает, но оно совпадает только на узлах, которые уже загружены. Я хотел бы, чтобы это работало на всех узлах уровня сайта, загруженных или нет.

Поисковый вызов ajax возвращает список идентификаторов сайтов, который передается плагину massload. Это вызывает LazyLoad метод с правильными идентификаторами. Чего я не могу понять, так это что ответить в ответ на вызов массовой загрузки. В соответствии с этим, он должен принять форму

{ 
  "id1" : { "id" : node_id_of_child1, "text" : "child2", "id" : node_id_of_child2, "text" : "child2" }, 
  "id2" : { ... node data ...}  
}

Где id1 и id2 соответствуют идентификаторам узлов из поиска.

Но когда я это делаю, узлы не добавляются в дерево, и поисковый термин совпадает только с уже загруженными узлами.

Это моя jstree конфигурация

$('#tree').jstree({
                core: {
                    data: {
                        url: '@Url.Action("Nodes", "Home")',
                        data: function (node) {
                            if (node.id === '#')
                                return {
                                    nodeType: 'root'
                                };
                            else 
                                return {
                                    nodeType: node.data.type,
                                    nodeValue: node.data.value                                     
                                };
                        },
                        type: 'POST'
                    }
                },
                plugins: ["massload", "search"],
                search: {
                    "show_only_matches": true,
                    ajax: {
                        url: '@Url.Action("Search", "Sites")',
                        type: 'POST'
                    }
                },
                massload: {
                    url: '@Url.Action("LazyLoader", "Home")',
                    data: function (nodes) {
                        return { "ids": nodes.join(",") };
                    },
                    type: 'POST'
                },
                themes: {
                    "theme": "default",
                    "dots": false,
                    icons: true
                }
            });

Вопросы: - Правильный ли формат ответа на вызов ajax массовой загрузки? - Каково действие плагина массовой загрузки на основе этого ответа? Должен ли он пытаться загрузить узлы в ответе таким же образом (то есть, используя тот же самый ajax-вызов), узлы загружаются, когда пользователь запрашивает их?

0 ответов

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