我试图让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调用),当用户请求时,节点会被加载?