javascript - jstree在非根节点使用refresh_node时出现的问题

标签 javascript jstree

我正在使用 jstree 显示一些节点(包括 DnD、类型和上下文菜单插件)。 我毫无问题地获取整棵树,正确显示它,并且我可以选择任何节点,但是,在一个节点上使用更新操作(通过对服务器的 Ajax 调用)后,我想刷新此节点(并且仅刷新此节点)节点。 fresh_node(myNode) 操作是我想要的,并且 Ajax 调用工作正常,并且只提供了我需要的子树部分。

但是,当 jstree 尝试重绘时,我收到有关变量不存在的错误。我调试了它,发现一些节点的parents数组消失了。

我使用备用 JSON 格式来加载我的树,并使用以下配置:

core{
    multiple: false,
    data {
        url: "my_url_string_to_server",
        data: function(node) { return { id: nodeId, /*other params*/ } }
    }
}
/*other plugins config*/

以及我对refresh_node的调用:

//nodeId is a string with the name of the node I want to refresh.
var node = $.jstree.reference('.tree-data').get_node(nodeId);
$.jstree.reference('.tree-data').refresh_node(node);
//I tried refresh_node(nodeId) too, with the same error result.

我的所有树节点是: { “id”,“唯一ID”, “ parent ”:“ parent ”}, “文本”,“名称”}, “状态”: { }, “类型”:“类型” “li_attr”:{ {“标题”,“标题”}, {“类”,“类”} } “a_attr”:{ {“类”,“类”} }, “数据”: { {“dbid”,“Id”}, {“dbparent”,“ParentId”}, {“状态”,“状态ID”} } }

如 jstree 文档 (see 'alternative JSON format') 中所述

作为 ajax 调用的结果返回它们的列表(必需节点和所有子节点)(不关心是对根节点还是另一个非根节点的调用)

请你告诉我我做错了什么?

提前非常感谢。

最佳答案

我发现了这个问题:当您使用 root id(“#”)以外的 id 进行调用时,刷新处理节点 id 的子节点。我的方法是返回根节点和子节点,这是错误的。没有直接从数据库更新单个节点的功能,但是this问题展示了如何从 js 更新它们,因此,我将尝试通过 ajax 调用获取新状态来更新它们,并使用该响应来更新所有数据并手动重绘。

希望这对其他人有用。

谢谢大家!

关于javascript - jstree在非根节点使用refresh_node时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251385/

相关文章:

javascript - JS树节点被选中时如何获取其祖先?

javascript - jstree 在打开分支时关闭其余分支

javascript - 如何以编程方式选择 jsTree 中的节点并打开所有父节点

javascript - 从 Facebook 加载跨源图像

javascript - 如何在 Firefox/Firebug 中调试无限循环?

javascript - 悬停图片显示说明

javascript - 如何在通过 Ajax.ActionLink 调用的动态加载的 ASP.NET MVC 部分 View 上初始化 jsTree

javascript - 从 https 父窗口访问 iframe 中的 http

javascript - 如何将表单的内容作为变量输入?

jstree - 从 jstree 节点清除缓存