sut*_*tee 5 javascript jstree jstree-search
是否可以使用 JsTree 进行“惰性搜索”,其中搜索结果可以是包含当前不在树中的节点的路径?我有一棵大树,我正在延迟加载节点,并且希望能够处理包括当前未加载的节点的搜索。
到目前为止,唯一对我有用的是使用搜索回调并替换树中的所有数据并刷新。我想知道是否有一种不那么棘手的方法来实现这一点。
旧的文档似乎暗示了这一点:
“这个对象可用于在每次搜索时向服务器发出请求 - 如果您使用异步树,则非常有用。这样您就可以返回需要在执行实际 DOM 搜索之前加载的 ID 数组(以便所有加载与搜索匹配的节点)。例如,如果用户搜索“字符串”,您会在服务器端获取它,检查数据库并发现有一个包含该字符串的节点。但该节点是其他节点的子节点等 - 因此在您的响应中,您必须返回节点的路径(不包括节点本身)作为 ids: ["#root_node","#child_node_3"]。这意味着 jstree 将加载这两个节点在进行客户端搜索之前,确保您的节点可见。”
我尝试使用以下代码对此进行测试。搜索确实触发了 url 调用,但 jsTree 似乎没有使用响应,或者如果我返回的节点不存在则抛出错误。我也没有看到对服务器的另一个查询,这可能是树中尚不存在的节点所需要的:
<html>
<body>
<div id="jstree">tree goes here</div>
<input type="button" class="button" value="Search" id="search" style="">
</body>
<link rel="stylesheet" href="static/dist/themes/default/style.min.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="static/dist/jstree.js"></script>
<script type="text/javascript">
$("#search").click(function () {
console.log("search");
$("#jstree").jstree("search", "test");
});
$('#jstree').jstree({
core: {
data: {
dataType: "json",
url: function (node) {
console.log(node.id);
return node.id === "#" ? "http://127.0.0.1:5000/" : "http://127.0.0.1:5000/";
}
}
},
search: {
case_insensitive: true,
ajax: {
url: "http://127.0.0.1:5000/",
"data": function (n) {
return { id: n.attr ? n.attr("id") : 0 };
}
}
},
plugins: ["json_data", "search"]
})
;
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
jsTree 异步搜索 - 触发加载新节点的解决方案似乎对我不起作用。jsTree 似乎没有对服务器的响应执行任何操作。
我可能很晚才回答这个问题,但这里有一个类似的问题:
jsTree AJAX search with some node childs?
接受的答案包含发送到服务器的内容以及响应应该是什么的详细信息(一组唯一的父 ID)。
确保您从中删除该函数search.ajax.data- 该属性不能是函数 - 它是标准 jQuery AJAX 配置(因此它应该是一个对象,并且 jstree 将向其添加一个str属性)。
127.0.0.1:5000顺便说一句,由于同源策略,请确保您实际上可以发送请求- 也许您需要添加 CORS 标头。
如果这没有帮助,请提供服务器响应(标头和正文)。
| 归档时间: |
|
| 查看次数: |
3821 次 |
| 最近记录: |