Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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_Fancytree - Fatal编程技术网

Javascript FancyTree:拖动到根级别时,节点对象不正确

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事件后为节点定义新的父id

假设将节点拖动到根以外的任何级别,则此函数工作正常

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等等。。