在非根节点中使用refresh_node时的Jstree问题

Jstree problem when using refresh_node in a non-root node

我正在使用 jstree 来显示一些节点(包括 DnD、Type 和 Contextmenu 插件)。 我得到的整棵树都没有问题,正确显示它并且我可以 select 任何节点,但是,在一个节点上使用更新操作(通过对服务器的 Ajax 调用)后,我想要刷新此(且仅此)节点。 refresh_node(myNode) 操作是我想要的,Ajax 调用工作正常,只给我需要的子树部分。

但是,当 jstree 尝试重绘时,我收到关于变量不存在的错误。我调试了它,我注意到一些节点的父数组已经消失了。

我正在使用备用 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", "UniqueId", "parent": "Parent" }, "text", "Name" }, "state": { }, "type": "type" "li_attr":{ { "title", "title" }, { "class", "class" } } "a_attr":{ { "class", "class" } }, "data":{ { "dbid", "Id" }, { "dbparent", "ParentId" }, { "status", "statusId" } } }

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

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

拜托,你能告诉我我做错了什么吗?

提前谢谢你。

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

希望这对其他人有用。

谢谢大家!