Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在向树中添加元素时自动扩展Webix树节点_Javascript_Webix - Fatal编程技术网

Javascript 如何在向树中添加元素时自动扩展Webix树节点

Javascript 如何在向树中添加元素时自动扩展Webix树节点,javascript,webix,Javascript,Webix,在我的Webix应用程序中,我有一个树,其中包含一些节点和叶节点。 如果将任何其他节点或叶节点添加到主分支或任何子分支,我希望从外部.js文件自动刷新树的该部分(可能是通过扩展节点) 我这里有一个片段: 任何关于如何编写扩展函数的示例都会很有帮助 谢谢。我不知道您的问题陈述到底是什么,但是,如果您想要节点的完整信息,它们与父节点的映射,它们的父ID等等。。。您可以使用instance.data.pull,它将为您提供所有行和列的完整信息。其中instance是组件{tree,datatable,

在我的Webix应用程序中,我有一个树,其中包含一些节点和叶节点。 如果将任何其他节点或叶节点添加到主分支或任何子分支,我希望从外部.js文件自动刷新树的该部分(可能是通过扩展节点)

我这里有一个片段:

任何关于如何编写扩展函数的示例都会很有帮助


谢谢。

我不知道您的问题陈述到底是什么,但是,如果您想要节点的完整信息,它们与父节点的映射,它们的父ID等等。。。您可以使用
instance.data.pull
,它将为您提供所有行和列的完整信息。其中
instance
是组件{tree,datatable,treetable,您正在使用的webix的任何组件}的实例

您可以在打开事件之前的内执行
此.data.pull
,您将得到如下结果

1: {id: "1", open: false, value: "Chicago", $parent: "root", $level: 2, …}
1.1: {id: "1.1", value: "Houston", $parent: "1", $level: 3, $count: 0}
1.2: {id: "1.2", value: "San Diego", $parent: "1", $level: 3, $count: 0}
2: {id: "2", value: "States", open: true, $parent: "root", $level: 2, …}
2.1: {id: "2.1", value: "California", $parent: "2", $level: 3, $count: 0}
2.2: {id: "2.2", value: "Florida", $parent: "2", $level: 3, $count: 0}
root: {id: "root", value: "Cities", open: true, $parent: 0, $level: 1, …}

其中
root
将是父元素,
$level
表示该元素存在于哪个级别,
open
表示当前元素是打开的还是关闭的。

如果我在var treeObj中有treeObject,那么通过执行treeObj.\u htmlmap,我将获得树的所有ID。同样通过treeObj._viewobj.textContent,我获得每个节点的所有文本名称。有没有办法从treeObj获取节点名及其对应ID的映射?谢谢。你提供的真的很有帮助。从这里我知道“休斯顿”的id是1.1。假设休斯顿也有叶节点,我又添加了一个叶节点作为'abcd'。现在,在添加之后,当我再次刷新/扩展Houston节点时,它确实会被扩展,但“Houston”下的现有节点也会被重新创建。所以我两次得到了“Houston”下的所有叶节点。同样的问题也会发生在其他节点上。如果你能帮我用新添加/删除的树/节点刷新树/节点,那就太好了。可能是一个小的exmaple。我不明白如何自动创建两次节点,如果您只创建一次。你能不能再详细一点,或者给我看一下代码片段?给我一点时间,这样我就可以更好地阐述它了。感谢每次我向数据存储添加一些东西时,我调用treeobj.data.add(obj、index、parentId)。注意,在初始加载之后,每当我添加任何额外的节点时,只要通过treeobj.data.add(obj、index、parentId)在添加的新节点数组上迭代即可。但是,如果我删除了任何节点,那么数组是空的,因此没有什么可以迭代和显示的。如果您能给我一个只刷新现有树的示例,那就太好了。我不明白您自己为什么要将新行添加到数据数组中,您应该使用webix api来添加行,因为添加或删除行是api的责任。如果要自己添加元素,则应在添加或删除元素后显式调用refresh()。请遵循下面的链接,我正在使用WebIXAPI添加/删除元素<代码>https://webix.com/snippet/00800a0f