我有两个断开连接的组件。其中一个是“控制面板”,单击该面板中的每个节点将触发一个事件,该事件根据边缘的权重将另一个边缘的某些边缘移除。

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/

10-12 12:18