Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 Fancytree:手动重新生成密钥以避免重复_Javascript_Jquery_Plugins_Treeview_Fancytree - Fatal编程技术网

Javascript Fancytree:手动重新生成密钥以避免重复

Javascript Fancytree:手动重新生成密钥以避免重复,javascript,jquery,plugins,treeview,fancytree,Javascript,Jquery,Plugins,Treeview,Fancytree,在我的应用程序中,我有两个fancytree实例,它们并排显示不同的内容tree1不能以任何方式修改,只能通过拖放(扩展名dnd将其节点复制到tree2) 在tree2的dragDrop:事件中,我有一些类似于: if(data.otherNode.tree === node.tree){ data.otherNode.moveTo(node, data.hitMode); } else{ data.otherNode.copyTo(node, data.hitMode); } 问题

在我的应用程序中,我有两个fancytree实例,它们并排显示不同的内容
tree1
不能以任何方式修改,只能通过拖放(扩展名
dnd
将其节点复制到
tree2

tree2的
dragDrop:
事件中,我有一些类似于:

if(data.otherNode.tree === node.tree){ 
  data.otherNode.moveTo(node, data.hitMode);
}
else{
  data.otherNode.copyTo(node, data.hitMode);
}
问题是,当我使用
copyTo()
时,节点的键也会被复制,如果我在
tree2
中多次复制同一个节点,我不可避免地会得到重复的键。我知道fancytree能够自动分配不重复的键(例如,如果树的源json没有键值),但我不知道在这种情况下如何进行分配。

copyTo()
有一个回调函数,允许您修改新节点。试试这个:

if(data.otherNode.tree === node.tree){ 
  data.otherNode.moveTo(node, data.hitMode);
}
else{
  data.otherNode.copyTo(node, data.hitMode, function(n){
      // Set your new key here!
      n.key = <NEW_KEY>;
    })
}
if(data.otherNode.tree===node.tree){
data.otherNode.moveTo(节点,data.hitMode);
}
否则{
data.otherNode.copyTo(节点,data.hitMode,函数(n){
//把你的新钥匙放在这里!
n、 键=;
})
}

或“delete n.key”,这将重新生成密钥。设置“n.key=null;”将生成一个新密钥。