jsPlumb: как выбрать конкретный коннектор

Я не могу понять, как выбрать конкретный соединитель jsPlumb. Я знаю, что могу выбрать все соединители, связанные с источником или целью, но часто у меня будет несколько соединителей, соединяющих один и тот же источник и цель, поэтому я не вижу способа выбрать конкретный соединитель в этом случае.

Мой конкретный вариант использования выглядит следующим образом:

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

идеи?


person dchapman    schedule 11.03.2013    source источник


Ответы (2)


Насколько я понял ваш вопрос, вы хотите отключить соединение, когда пользователь нажимает на него.

Что тебе необходимо сделать:

  1. Зарегистрируйте прослушиватель "click" в соединении с событиями jsPlumb.

  2. После запуска события клика используйте jsPlumb.detach для соединения, вызвавшего событие, оно будет удалено, а конечные точки останутся нетронутыми.

Вот пример кода, который я использовал:

        //connection was established let's add listener
        jsPlumb.bind("jsPlumbConnection", function(info) {

            //get connection from event info
            var connection = info.connection;

            //add on click event
            connection.bind("click", function(conn) {
                jsPlumb.detach(conn);
            });
        });

Исходная демонстрацияОбновленная демонстрация

person DMINATOR    schedule 21.03.2013
comment
Вау, я действительно не очень хорошо объяснил свою проблему. ржу не могу. Я полагаю, что в основе моего вопроса было то, что при нажатии на соединитель я не знал, как определить, какой объект соединения в моей базе данных был нажат. Однако я обнаружил, что могу установить идентификатор на разъеме, который дает мне решение. - person dchapman; 22.03.2013

if(action == "delete"){
        jsPlumb.remove(object_selected, {
            fireEvent: false, 
            forceDetach: false 
        })

или это:

 $(document).keyup(function(e){
        if(e.keyCode == 46){
            if(connection != null){
                jsPlumb.detach(connection);
                connection = null;
            }

            if(object_selected != null){
                jsPlumb.remove(object_selected);
                object_selected = null;
            }
        }

    }) 
person jihyo    schedule 22.08.2014