带有dnd插件的JsTree,总是复制

时间:2010-09-17 10:51:06

标签: jstree drag-and-drop

我有两棵树使用jsTree和dnd插件 我希望每个拖动操作都是副本而不是移动 有一个“copy_modifier”在按下修饰键时可以正常工作,但是我希望复制成为没有修饰符的默认行为。 有什么想法吗?

谢谢,
阿德里安

3 个答案:

答案 0 :(得分:3)

http://groups.google.com/group/jstree上找到解决方案 配置jsTree时添加了以下部分:
“crrm”:{             “move”:{“always_copy”:“multitree”}         }

希望这有帮助,
阿德里安

答案 1 :(得分:2)

Adrian的解决方案不适用于新版本。 有dnd插件总是复制标志 dnd.always_copy

设置此标志将进行所有拖放复制操作而不是移动。但是如果你正在寻找一个解决方案,你需要在内部树元素上移动dnd但是树之间的树是复制而不是这里的黑客:

  • 在页面上保留全局变量标记

  • 处理copy_node.jstree事件并更新您的全局标志 data.is_multi(data是事件函数的第二个arg)

  • 实现check_callback函数,如果操作是delete_node并设置了您的标志,请取消设置您的标志并返回false,以防止从dnd中删除。

答案 2 :(得分:2)

新版本的另一种解决方案。它有效,但没有经过全面测试。

"core": {
    "check_callback": function (operation, node, node_parent, node_position, more) {
        if (more) {
            if (more.is_multi) {
                more.origin.settings.dnd.always_copy = true;
            } else {
                more.origin.settings.dnd.always_copy = false;
            }
        }
        return true;
    }
}