Javascript Fancytree:手动重新生成密钥以避免重复
在我的应用程序中,我有两个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); } 问题
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;”将生成一个新密钥。