Как получить клик по выбранному узлу FancyTree, чтобы снова активировать - PullRequest
0 голосов
/ 25 октября 2019

Если я щелкаю по узлам своего необычного меню, они активируют диалоговые окна, которые появляются рядом с меню. У них есть кнопки отмены, которые закрывают диалог. Однако, когда я снова нажимаю на тот же пункт меню (узел), это же диалоговое окно больше не появляется (как я этого хочу), я думаю, потому что Fancytree думает, что это текущий выбранный узел, поэтому игнорирует его.

Если я выберу другой пункт меню, он будет работать нормально, и появится диалоговое окно для этого элемента. Так как же заставить Fancytree запускать ту же самую функцию activate: для выбранного в данный момент пункта меню при повторном нажатии?

В своем обработчике кнопки отмены я пытался использовать node.setSelected(false), который должен отменить выбор элемента, но все жедиалоговое окно не появляется снова, когда я снова нажимаю на тот же элемент. Я подтвердил, что это правильный (текущий) узел, на котором используется setSelected (false).

Я просто использую стандартную конфигурацию fancytree, например:

var currentMenuItemNode;

$("#tree").fancytree({
    activate: function(event, data){
        this.currentMenuItemNode = data.node;
    }
});

cancelButtonHandler() {
  // Close dialog box here

  this.currentMenuItemNode.setSelected(false); // Deselect item
}

Любые мысли приветствуются!

1 Ответ

1 голос
/ 26 октября 2019

Событие activate не запускается, если узел уже активен, поэтому событие нажатия *1003* может быть тем, что вы ищете:

$("#tree").fancytree({
  [...]
  click: function(event, data) {
    var node = data.node,
        // Only for click and dblclick events:
        // 'title' | 'prefix' | 'expander' | 'checkbox' | 'icon'
        targetType = data.targetType;

    // we could return false to prevent default handling, i.e. generating
    // activate, expand, or select events
  },
});
...