【问题标题】:Move the whole vis network when dragging a node拖动节点时移动整个 vis 网络
【发布时间】:2018-10-17 20:48:40
【问题描述】:

当我拖动网络时,它移动得很好,并按预期改变了“相机”的位置。但是当我拖动一个节点时,它会移动节点。我可以让它像没有按下节点一样移动整个“相机”吗?

我尝试使用“拖动”事件,但无法使其表现得如我所愿。

【问题讨论】:

  • “我尝试使用 'dragging' 事件但是......” - 您能分享一下您尝试过的内容以及失败的原因吗?
  • 好吧,我已经删除了我的尝试。但一般规则是我在使用事件 mouseDelta 和鼠标位置时尝试使用 network.moveTo 并且它总是出错:(如果我可以以某种方式发送事件,就好像没有选择节点一样,或者我不知道......

标签: javascript vis.js vis.js-network


【解决方案1】:

看来,实现起来还是挺简单的,只要去掉dragStart上的选择即可:

var clearSelection = function(){
    network.unselectAll();
};
network.on('dragStart',clearSelection);

this fiddle 为我工作。 (我也尝试过network.on('selectNode',clearSelection); - 可能对 UX 有用,但不能满足您的需要)

【讨论】:

  • 首先,我非常感谢您抽出宝贵的时间。我害怕独自一人。不,您的解决方案有效,但是,不幸的是我无法使用它,因为我需要选择事件 :(( 这些是我订阅的事件:network.on("blurNode", blurNode); network.on("selectNode" , selectNodeEvent); network.on("拖动", selectNodeEvent);
  • @RanShaltiel 不确定是什么问题。如果您已经有dragStart 的处理程序,只需将network.unselectAll(); 添加到其中;如果您真的想避免选择,您可以对selectNode 执行相同的操作,但如果您有其他处理程序,您可能不想仅在选择时删除选择。无论如何,您应该首先描述(“设计”)所需的行为,然后再考虑实现。如果你想详细说明这一点,你可以问另一个问题(但一定要包含你已经拥有的代码)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 2018-08-29
  • 2020-07-07
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多