События перетаскивания в плагине dnd в jstree не вызываются - PullRequest
7 голосов
/ 24 мая 2011

Мы используем jsTree для представления файлов и папок в виде дерева.Файлы и папки могут быть перемещены из других папок.

Для этого я включил плагин перетаскивания.Папки и файлы можно перетаскивать и отбрасывать, но события, которые вызываются перетаскиванием, не вызываются.

Мне нужно, чтобы эти события запускались при перетаскивании, поскольку мне нужно обновить состояние перетаскивания в бэкэнде с помощью Ajax.

Пожалуйста, помогите

Нижекод.

<script type="text/javascript" class="source">

$(function() {

        $("#folderTree").jstree( {
        "dnd" : {
            "drop_finish" : function () { 
                alert("DROP"); 
            },
            "drag_check" : function (data) {
                if(data.r.attr("id") == "phtml_1") {
                    return false;
                }
                return { 
                    after : false, 
                    before : false, 
                    inside : true 
                };

                alert("hhh jjj kk ");
            },
            "drag_finish" : function () { 
                alert("DRAG OK"); 
            }
        },

        "plugins" : [ "core", "html_data", "themes", "ui","dnd"],

        "ui" : {
            "initially_select" : [ "phtml_1" ]
        },

        "core" : { "initially_open" : [ "phtml_1" ] },

        "themes" : {
                "theme" : "apple"
        },

        "types" : {
            "valid_children" : [ "root" ],
            "types" : {
                "root" : {
                    "icon" : { 
                        "image" : "../images/drive.png" 
                    },
                    "valid_children" : [ "folder" ],
                    "draggable" : false
                },
                "default" : {
                    "deletable" : false,
                    "renameable" : false
                },

                "folder" : {
                    "valid_children" : [ "file" ],
                    "max_children" : 3
                },
                "file" : {
                    // the following three rules basically do the same
                    "valid_children" : "none",
                    "max_children" : 0,
                    "max_depth" : 0,
                    "icon" : {
                        "image" : "../images/file.png"
                    }
                }

            }
        }



    });
});

Я что-то упустил или мне нужно что-то еще сделать для вызова событий перетаскивания?

Ответы [ 3 ]

6 голосов
/ 19 июля 2011

Проверить по этому URL-адресу Проблема с перетаскиванием JSTree Использовать class = "jstree-drop" вместе с идентификаторами для всех узлов.Это будет работать.Например: - Если вы используете данные json

"plugins" : [ "core", "json_data", "themes", "ui","dnd"],
{
    {id : "id1",rel : "folder",class:"jstree-drop"},
    data:"New folder2",
    state:"closed"
}

, если мы используем данные html, тогда добавьте class = "jstree-drop" ко всем узлам.Тогда событие drop_finish будет работать нормально, но не drag_check, drag_finish.Я попытался, добавив jstree-drag в класс css.

Обновлено (спустя один час 19 июля 2011 г.): - добавьте jstree-draggable css класс ко всем элементам.штраф более подробная информация http://www.jstree.com/documentation/dnd

2 голосов
/ 24 мая 2011

Если вы хотите перетащить узлы внутри дерева, вы должны использовать Плагин CRRM , а не DND.DND используется для перетаскивания узлов за пределы дерева или между деревьями.

1 голос
/ 07 февраля 2013

Опции dnd.drag_check, dnd.drag_finish, dnd.drop_finish используется для посторонних объектов . Для управления перемещением внутри одного дерева (или между деревьями) используйте crrm.move.check_move.

...