3

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

谢谢,
阿德里安

4

3 回答 3

3

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

希望这会有所帮助,
阿德里安

于 2010-09-20T19:05:23.720 回答
3

新版本的另一个解决方案。它可以工作,但没有经过全面测试。

"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;
    }
}
于 2015-05-25T15:43:32.673 回答
2

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

设置此标志将使所有拖放复制操作而不是移动。但是,如果您正在寻找一种解决方案,您需要在 dnd 上移动内部树元素但树间 dnds 是副本,那么这里有一个 hack:

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

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

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

于 2014-08-11T04:47:08.123 回答