Как найти последний удаленный узел в дереве ExtJs4 - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь реализовать следующее:

У меня есть 2 панели дерева с включенным перетаскиванием. Я могу перетащить некоторые предметы из первого дерева во второе. Первое дерево - это каталог компонентов, второе - конструктор продукта. В некоторых случаях, когда я добавляю узел в конструктор, мне нужно добавить дочерний элемент в удаленный узел. Поэтому на самом деле, когда я отбрасываю, мне нужно добавить 2 узла одновременно: узел, который был отброшен, и второй, который я добавляю в коде.

Я решил добавить этот дополнительный узел в обработчик событий удаления, но проблема в том, что я не понимаю, как найти последний удаленный узел.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

Мне удалось реализовать то, что мне нужно, используя комбинацию из двух событий itemadd и drop

Вот пример, надеюсь, он кому-нибудь пригодится:

    onComponentAdd: function (records) {
        var record = records[0];
        this.lastAddedRecord = record;
    },

    onComponentDrop: function (element, data, dropNode) {
        var record = this.lastAddedRecord;

        var data = record.get('Data');
        if (!Ext.isEmpty(data)) {
            var scheme = data.scheme;
            Ext.each(scheme, function (item) {
                if (item.type == 'componentlist') {
                    record.appendChild({
                        text: item.name,
                        loaded: true,
                        expanded: true,
                        allowDrop: true
                    });
                }
            });
        }
    }
0 голосов
/ 21 декабря 2011

Вы можете использовать событие drop, доступное в классе Ext.tree.plugin.TreeViewDragDrop. Этот класс в основном обеспечивает функциональность перетаскивания для представления дерева (TreeView). Таким образом, вам нужно добавить событие удаления в ваш объект TreeView и добавить ваши дочерние узлы или другие операции при запуске этого события.

Чтобы настроить TreeView, вы можете использовать параметр viewConfig, доступный в классе панели дерева. Над головой вы могли бы иметь кодировать что-то вроде этого:

viewConfig: {
    plugins: {ptype: 'treeviewdragdrop'},
    listeners: {
        drop: function(node,data,model,dropPosition,opts) {
            // Add child nodes & other modification codes here...
        }   
    }
}

См. Метод отбрасывания в документах для получения более подробной информации о том, как получить необходимые данные.

...