Как полностью отключить элементы событий? - PullRequest
0 голосов
/ 17 апреля 2020

Я использую составную модель и расширение cytoscape-component-drag-and-drop, чтобы позволить пользователю вручную реорганизовать макет, группируя несколько узлов и легко перемещая целые группы.

Теперь я хочу кнопка для переключения отображения «групп» этих групп, но продолжает отображать все не родительские узлы. Сначала я попытался спрятать () на родительских узлах, но он также скрывает дочерние элементы, поэтому я переключился на динамическое применение класса, который задает display: hidden.
Казалось, что все получилось, , но все еще скрытый блок может при нажатии и применяется «визуальная обратная связь» Cytoscape по умолчанию, показывающая область, где скрытое поле все еще лежит.

Я пробовал множество вещей, которые не работали:
- отключить события из моего скрытого класса стилей: проверенные события: нет . Стоит ли сообщать об этом как об ошибке?
- .ungrabify (). Unselectify (). Panify (). Lock ()
- при нажатии: уничтожить объект события
- установить e.target._private.active = false

Я попробовал неприятный взлом: настройка e.target._private.position = {} Событие все еще вызывается, но уничтожение позиции успешно предотвращает "визуальный обратная связь "от случившегося , мой ящик фактически остается" скрытым ". Но все же событие происходит не на той цели: поле, а не в пустом пространстве контейнера cytoscape. Я могу продолжать взламывать и уйти с ним, но разве нет более простого решения?

Можно ли просто и действительно пропустить события скрытых родительских узлов?

1 Ответ

1 голос
/ 23 апреля 2020

Вы неправильно использовали events.

cy.$('node').forEach(node => {
    node.events = 'no'; // will not work
});

Следующее работает, и вы также можете восстановить события, когда захотите.

cy.$('node').forEach(node => {
    node.style('events', 'no');
});
...