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

标签 javascript fancytree

我试图在拖放事件后为节点定义新的父 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 (它的值) root 当我使用 tree.toDict(true); 输出树时功能。

确定节点是否已被拖动到根的正确方法是什么?

最佳答案

正如 mar10 提到的,您永远不会将不可见的系统根节点作为拖放事件的目标节点。因此你永远不会达到 0 级。

节点总是被放置在另一个节点的“上方”、“之前”或“之后”,由 node.hitMode 表示。

如果您只是想防止将节点放入第一级(我认为这就是您所说的根级)并且仅“放入”文件夹,请限制 hitMode,如下所示:

dragEnter: function(node, data) {
        if(node.folder == false) {
               return false;
        }
        return 'over';
}

如果您想检查拖放事件中的第一(根)级别,您可以执行以下操作:

dragDrop: function(node, data) {
        if (node.getLevel() == 1 && (data.hitMode == 'after' || data.hitMode == 'before')) {
            console.log('dropped into first level');
        }
}

如果您的问题针对其他问题,请编辑您的问题或发表评论。

关于javascript - FancyTree:拖动到根级别时节点对象不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172020/

相关文章:

javascript - PEG.JS 解析逻辑变量名称、操作数和值

javascript - 顺时针旋转图标 360 度 angularjs

javascript - 提交前更改表单属性

javascript - 如何在按钮单击事件中更改 fancytree SelectMode?

javascript - Fancytree 渲染所有元素

jquery - Fancytree getSelectedNodes 不使用 select 事件

javascript - 查找 el 内的节点

javascript - 当我访问对象的值时获取未定义的值

javascript - 无法使用 ExtDnd5 对节点进行排序,只能设置为子节点

javascript - Fancytree:手动重新生成 key 以避免重复