带有ajax搜索和massload插件的jstree

时间:2018-04-17 12:45:19

标签: jstree jstree-search

我试图让massload插件与我的jstree配置一起使用。节点构建为Country->City->Site->Product->License。最初加载树时,只加载顶级节点(在我的国家/地区)。当用户展开节点时,使用ajax加载子节点。我有一个搜索框在树中搜索,这是有效的,但它只匹配已加载的节点。我希望这可以在所有网站级节点上工作,无论是否加载。

搜索ajax调用返回一个站点ID列表,该列表将传递给massload插件。它使用正确的id调用LazyLoad方法。我无法弄清楚的是响应massload调用返回的内容。根据{{​​3}},它应采取

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

其中id1和id2匹配搜索中的节点ID。

但是,当我这样做时,节点不会添加到树中,搜索项仅匹配已加载的节点。

这是我的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
                }
            });

问题: - massload ajax调用的响应格式是否正确? - 什么是massload插件基于此响应的操作?它是否应该尝试以相同的方式加载响应中的节点(即使用相同的ajax调用),当用户请求时,节点会被加载?

0 个答案:

没有答案