2015-07-20 1 views
1

У меня есть два отсоединенных компонента. Одна из них - это «панель управления», и каждый узел в ней, при нажатии, должен запускать событие, которое удаляет определенные ребра из другого, в зависимости от веса, который имеют края.Использование eles.restore(); для восстановления краев Не работает - что случилось с моим кодом?

cy.on('tap', 'node', function(evt){ 
    var node = evt.cyTarget; 
    var clicked_val = node.data('value'); 
    // What is the value of the clicked node in the "control" graph? 

    if (typeof(clicked_val) != "undefined"){ 
    // Only "control panel" graph nodes have 'value' 

    var to_restore = cy.edges("[weight > 0]"); 
    to_restore.restore(); 
    // Restore everything, then... 

    var to_remove = cy.edges("[weight < "+clicked_val+"]"); 
    cy.remove(to_remove); 
    // Remove edges whose weight is less than those you want. 
    } 
}); 

Линия cy.edges("[weight > 0]"); должен захватить каждое ребро (в неуправляющем графике), а в некоторых тестах, действительно кажется. Однако to_restore.restore(); не возвращает их обратно.

Все ребра имеют уникальные идентификаторы, что не должно быть проблемой.

Любые мысли оценили. Я не использую restore(); правильно?

ответ

0

Вы запрашиваете график и затем вызываете восстановление элементов в результате этого запроса. Это означает, что вы вызываете restore() на элементы, уже находящиеся на графике, без эффекта. Держите ссылки на удаленные элементы правильно, используя restore().

+0

Спасибо! Я думаю, проблема заключалась в том, что если все_и_ии совпадают с элементами, находящимися на графике, ничего не восстанавливается. – onbooze