JsTree с плагином dnd, всегда копировать - PullRequest
3 голосов
/ 17 сентября 2010

У меня есть 2 дерева, использующих плагин jsTree и dnd.
Я хочу, чтобы каждая операция перетаскивания была копией, а не ходом.
Существует "copy_modifier", который работает хорошо при нажатии клавиши-модификатора, ноЯ хочу, чтобы копирование было поведением по умолчанию без модификатора.Есть идеи?

Спасибо,
Адриан

Ответы [ 3 ]

3 голосов
/ 20 сентября 2010

Нашел решение по http://groups.google.com/group/jstree
Я добавил следующий раздел при настройке jsTree:
"crrm": { "move": {"always_copy": "multitree"} }

Надеюсь, это поможет,
Адриан

2 голосов
/ 25 мая 2015

другое решение для новой версии.это работает, но не полностью проверено.

"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;
    }
}
2 голосов
/ 11 августа 2014

Решение Адриана не будет работать с новыми версиями. Там плагины dnd всегда копируют флаг dnd.always_copy

Установка этого флага приведет к тому, что все операции копирования и перетаскивания будут выполняться вместо перемещения. Но если вы ищете решение, в котором вам нужно переместить элементы внутреннего дерева на dnd, а inter tree должен быть копией, то вот хак:

  • Сохраняйте флаг глобальной переменной на своей странице

  • Обрабатывать события copy_node.jstree и обновлять свой глобальный флаг с data.is_multi (данные - второй аргумент функции события)

  • Реализация check_callback , и если операция имеет значение delete_node и ваш флаг установлен, сбросьте ваш флаг и верните false, предотвращая удаление из dnd.

...