Javascript FancyTree:拖动到根级别时,节点对象不正确
我试图在dragdrop事件后为节点定义新的父id 假设将节点拖动到根以外的任何级别,则此函数工作正常Javascript FancyTree:拖动到根级别时,节点对象不正确,javascript,fancytree,Javascript,Fancytree,我试图在dragdrop事件后为节点定义新的父id 假设将节点拖动到根以外的任何级别,则此函数工作正常 dragDrop: function(node, data) { /** This function MUST be defined to enable dropping of items on * the tree. */ data.otherNode.mov
dragDrop: function(node, data) {
/** This function MUST be defined to enable dropping of items on
* the tree.
*/
data.otherNode.moveTo(node, data.hitMode);
// Set Parent ID with id of parent
data.otherNode.data.parent_id = node.data.id;
}
然而,当把一个节点拖到根节点上时,它会从其他地方获取一个id,我还没有弄清楚这个模式
我一直在监视fancytree node.key,它显示父节点的键,它总是输出key_2,而从不输出root_1,这是我使用tree.toDicttrue输出树时的root值;功能
找出节点是否已被拖到根目录的正确方法是什么?这是预期的behvior:
var tree = $(":ui-fancytree").fancytree("getTree");
tree.rootNode.getLevel() // == 0 (invisble system root)
tree.rootNode.getFirstChild().getLevel() // == 1 (visible top level node)
您可以作为另一节点的子节点在i.a.之前或之上放置。您永远不会将根节点作为目标,因为您看不到它。
如果您记录node.title、node.hitMode和node.getLevel,事情可能会变得很清楚…如mar10所述,您将永远无法将不可见的系统根节点作为dragDrop事件的目标节点。因此,你永远不会达到0级 节点始终放置在由node.hitMode表示的其他节点之前或之后 如果您只是想防止将节点放入第一级,我认为这就是所谓的根级,并且只放入文件夹,请限制hitMode,如:
dragEnter: function(node, data) {
if(node.folder == false) {
return false;
}
return 'over';
}
如果要检查dragDrop事件中的第一个根级别,可以执行以下操作:
dragDrop: function(node, data) {
if (node.getLevel() == 1 && (data.hitMode == 'after' || data.hitMode == 'before')) {
console.log('dropped into first level');
}
}
如果您的问题针对其他内容,请编辑您的问题或留下评论。仅为澄清,您想知道您要将其拖动到的节点是否没有父节点或是顶级根节点?getLevel=0是root@ChaseRocker不幸的是,当我查看node.getLevel时,我得到了根文件夹和第一级文件夹的级别1,它可以正确地用于级别2、3等等。。