jsplumb deleteEndpoint не работает должным образом

У меня проблема с функцией deleteEndpoint jsPlumb.

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

Но я переместил свой код в «dblclick» и вижу ту же проблему. Один из узлов, помеченных для удаления, удаляется, но затем КАЖДАЯ конечная точка в системе замораживается на месте - отключается от своего элемента после его перетаскивания. Я не уверен, что вызывает это: вот соответствующий код и несколько скриншотов...

jsPlumb.bind("dblclick", function(c) { 

            alert('starting...');

            var endpoints_to_delete = new Array();
            jsPlumb.selectEndpoints({source:c.sourceId}).each(function(endpoint) {
                if( endpoint.connections.length <= 0 )
                    endpoints_to_delete.push(endpoint);
            });
            jsPlumb.selectEndpoints({source:c.targetId}).each(function(endpoint) {
                if( endpoint.connections.length <= 0 )
                    endpoints_to_delete.push(endpoint);
            });

            alert(endpoints_to_delete.length); // 3

            $.each(endpoints_to_delete, function(endpoint) {
                jsPlumb.deleteEndpoint(endpoint);
            });

        }); 

Вот график, прежде чем я попытаюсь удалить конечные точки — все конечные точки все еще не повреждены с перетаскиваемыми элементами, к которым они прикреплены. График перед попыткой удалить дополнительные конечные точки

После попытки удалить конечную точку КАЖДАЯ конечная точка отключается от своего элемента... График после попытки dblclick удалить дополнительные конечные точки


person Nick Pickering    schedule 18.09.2013    source источник
comment
stackoverflow.com/questions/17786329/   -  person Nick Pickering    schedule 19.09.2013


Ответы (1)


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

    deleteEmptyEndpoints: function(element)
    {
        var endpoints_to_delete = [];
        jsPlumb.selectEndpoints({source:element}).each(function(endpoint) {
            console.log(endpoint);
            if( !!endpoint && endpoint.connections.length <= 0 )
            {
                console.log('marking ' + endpoint.getId() + ' for deletion');
                endpoints_to_delete.push(endpoint);
            }
        });

        $.each(endpoints_to_delete, function(index, endpoint) {
            console.log('deleting endpoint: ' + endpoint);
            jsPlumb.deleteEndpoint(endpoint);
            console.log('endpoint deleted');

        });
    }
person Nick Pickering    schedule 21.09.2013