我有两个断开连接的组件。其中一个是“控制面板”,单击该面板中的每个节点将触发一个事件,该事件根据边缘的权重将另一个边缘的某些边缘移除。
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();
不能将它们全部带回来。所有边缘都有唯一的ID,这应该不成问题。
任何想法表示赞赏。我不使用restore();正确吗?
最佳答案
您正在查询图形,然后对该查询结果中的元素调用restore。这意味着您要在图中已存在的元素上调用restore()
-无效。保留对已删除元素的引用以正确使用restore()
。
关于javascript - 使用eles.restore();恢复边缘不起作用-我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31514310/