Как поймать событие перетаскивания YUI3 Sortable? - PullRequest
1 голос
/ 06 марта 2012

Сортировка с перетаскиванием отлично работает, но я хотел бы знать, как ловить, когда кто-то выполняет перетаскивание.

Я пробовал это, но ни одно из предупреждений не срабатывает:

YUI().use('sortable', function(Y) {
var sortable1 = new Y.Sortable({
    container: '#demo1',
    nodes: 'li',
    on: {
        nodesChange: function() {
            alert('nodes');
        }
    },
    after: {
        containerChange: function() {
            alert('container');
        }
    },
    after: {
        moveTypeChange: function() {
            alert('moveType');
        }
    }
});
});

Приведенный выше код просто не работает.

В приведенном ниже коде у меня теперь работает событие click, но не событие copy.

YUI().use('event', 'node', function (Y) {
    var clickedNode = Y.one('#save-order-quicklink');

    var draggedNodes = Y.all('.results-row');
    if (draggedNodes) {
        draggedNodes.each( function(node) {
            node.on('click', function(eventFacade) {
                alert('click');
            });
            node.after('copy', function(eventFacade) {
                alert('copy');
            });
        });
    }
});

Документация для события copy гласит:

копия
копия (событие)
Сортируемый узел был перемещен.

1 Ответ

0 голосов
/ 08 августа 2014

Как прослушивать событие перетаскивания YUI3:

Чтобы выполнить обратный вызов, когда YUI3 Sortable был перетащен , вы можете прослушать Sortable moved событие:

sortable.on('moved', function(event) {
    // your code here...
});

В качестве альтернативы, вы также можете использовать DragDropMgr для прослушивания всех drag событий, например, так:

Y.DD.DDM.on('drag:drag', function(event) {
    // your code here...
});

Посмотритев Руководство пользователя по перетаскиванию для получения дополнительной информации о Перетаскивание events.


Объяснение, почему ваш другой код не работает:

Кодовый блок 1:

Причина, по которой ни одно из событий в вашем первом кодовом блоке не сработало, заключается в том, что они прослушивают nodes, container и moveType атрибуты подлежат изменению.Например, код типа sortable1.set('nodes', newNodes); вызовет событие nodesChange.

Подробнее см. В YUI3 Sortable Руководство пользователя .

Блок кода 2:

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

...