JsPlumb+vue 实现拖拽连线,点击删除连线节点

JsPlumb 实现拖拽连线,点击删除连线,点击删除节点标题


参考网上的代码写的练习
实现的功能
拖拽连线: 设置静态端点,端点自带拖拽连线的功能
点击连线删除该连线:plumbIns.deleteConnection(conn);
点击dom删除其自身包括节点和连线

因为用到dom,在mounted()里面写

百度出来的有些函数已经废弃了,最好使用的时候直接console.log(jsPlumb)看有什么内置函数

jsPlumb 里面的内置删除函数

  1. deleteConnection: ƒ (connection, params)
  2. deleteConnectionsForElement: ƒ (el, params)
  3. deleteEndpoint: ƒ (object, dontUpdateHover, deleteAttachedObjects)
  4. deleteEveryConnection: ƒ (params)
  5. deleteEveryEndpoint: ƒ ()
  6. deleteObject: ƒ (params)

完整代码如下

<template>
  <div id="content">
    <div id="state1"
         class="item">start</div>
    <div id="state2"
         class="item"></div>
    <div id="state3"
         class="item">end</div>
  </div>
</template>

<script>
import {
    jsPlumb } from 'jsplumb'
export default {
   
  name: 'learnJsplumb',
  mounted() {
   
    let plumbIns = jsPlumb.getInstance()
    plumbIns.ready(function () {
   
      var common = {
     //设置端点样式
        isSource: true,
        isTarget: true,
        connector: ['Flowchart', {
    cornerRadius: 5 }],//连接器使用流程图外观 设置样式
        // overlays: [ ['Arrow', { width: 12, length: 12, location: 0.5 }] ], 而在addEndpoint方法中,不能使用overlays,需要使用connectOverlays
        endpoint: 'Dot',
        paintStyle: {
     //通过设置各种 *Style来改变链接或者端点的样式 //连接器外观
          fill: '#316b31',
          
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面我将简单介绍一下如何使用 LiteGraph 和 Vue 实现拓扑图 Demo。 LiteGraph 是一个开源的 JavaScript 图形编程库,可以用于创建交互式的节点图。Vue 是一个流行的 JavaScript 框架,可以用于构建用户界面。 首先,我们需要安装 LiteGraph 和 Vue。可以通过以下命令进行安装: ``` npm install litegraph vue ``` 接下来,我们创建一个 Vue 组件,用于展示拓扑图。在组件中,我们需要引入 LiteGraph 和样式表文件: ```html <template> <div class="topology-graph"> <canvas ref="canvas"></canvas> </div> </template> <script> import LiteGraph from 'litegraph.js'; import 'litegraph.js/css/litegraph.css'; import './topology-graph.css'; export default { name: 'TopologyGraph', mounted() { this.graph = new LiteGraph.LGraph(); this.graph_canvas = new LiteGraph.LGraphCanvas(this.$refs.canvas, this.graph); }, beforeDestroy() { this.graph_canvas?.dispose(); this.graph?.reset(); }, }; </script> ``` 在组件的 `mounted` 生命周期钩子函数中,我们创建了一个 LiteGraph 图形对象和一个 LiteGraph 的画布对象,并将画布对象绑定到组件的 `canvas` 元素上。 接下来,我们可以添加节点连接线到图形对象中。例如,以下代码将添加两个节点和一个连接线: ```javascript this.graph.add(new LiteGraph.LGraphNode('input')); this.graph.add(new LiteGraph.LGraphNode('output')); const node1 = this.graph.getNodeById(1); const node2 = this.graph.getNodeById(2); this.graph.add(new LiteGraph.LLink(node1, 0, node2, 0)); ``` 这些节点连接线可以通过拖动和连接来交互。最后,我们需要使用 CSS 样式表对画布进行布局和样式设置。 以上是一个简单的 LiteGraph 和 Vue 实现拓扑图 Demo 的例子,你可以根据自己的需求进行更加复杂的实现。 ### 回答2: Litegraph是一个轻量级的图形编程框架,而Vue是一个流行的前端框架。在Vue中,我们可以使用Litegraph来实现一个拓扑图的demo。 首先,我们需要在Vue项目中引入Litegraph库。可以通过npm或者直接在html中引入Litegraph的脚本文件。 接下来,在Vue组件中,我们可以使用Litegraph来创建一个图形化的拓扑图。在组件的生命周期方法中,可以创建Litegraph的Graph实例,并设置其容器。 ```javascript <template> <div> <div ref="graphContainer"></div> </div> </template> <script> import Litegraph from 'litegraph.js'; export default { mounted() { const graph = new Litegraph.LGraph(); const container = this.$refs.graphContainer; // 设置图形容器 graph.setCanvas(container); // 在图形中添加节点 const node1 = Litegraph.createNode("basic/const"); const node2 = Litegraph.createNode("basic/watch"); // 将节点添加到图形中 graph.add(node1); graph.add(node2); // 连接节点 node1.connect(0, node2, 0); // 运行图形 graph.start(); } } </script> ``` 在上面的代码中,我们首先创建了一个Litegraph的Graph实例,并设置了一个容器来展示拓扑图。然后,我们创建了两个节点,并将它们添加到图中。最后,通过连接节点的输入输出来建立节点之间的关系。当图形被创建完毕后,我们可以调用start方法来运行图形。 通过以上步骤,我们就可以使用Litegraph和Vue实现一个简单的拓扑图demo了。当然,具体的拓扑图样式和逻辑还需要根据实际需求进行定制和扩展。 ### 回答3: litegraph是一个用于构建流程图和拓扑图的JavaScript库,而Vue是一种流行的JavaScript框架。结合litegraph和Vue,我们可以实现一个拓扑图的Demo。 首先,我们需要在项目中引入litegraph和Vue的依赖包。可以通过CDN或npm安装这些依赖。然后,我们在Vue的页面中创建一个div元素作为容器,用于展示拓扑图。 接下来,我们可以在Vue的生命周期钩子函数created中,使用litegraph创建一个Graph对象,并将其渲染到之前创建的div中。代码如下: ``` <template> <div id="topology"></div> </template> <script> import LiteGraph from 'litegraph.js'; export default { created() { const container = document.getElementById('topology'); const graph = new LiteGraph.Graph(container); // 添加节点 const node = LiteGraph.createNode('basic/input'); node.pos = [100, 100]; graph.add(node); // 添加连线 const outputNode = graph.getNodeById(node.id); const inputNode = graph.getNodeById(node.id); const link = outputNode.connect(0, inputNode, 0); // 渲染画布 graph.start(); // 支持鼠标拖拽移动节点连线等交互操作 container.addEventListener('mousemove', graph.processMouseMove.bind(graph)); container.addEventListener('mouseup', graph.processMouseUp.bind(graph)); container.addEventListener('mousedown', graph.processMouseDown.bind(graph)); }, }; </script> ``` 在上述代码中,我们首先获取到之前创建的div容器元素,然后创建一个Graph对象,并将其渲染到该容器中。 接下来,我们创建节点连线,将节点添加到图中,并通过连接连线起来。这里创建了一个输入节点和一个输出节点,并通过连线将它们连接起来。 最后,我们启动Graph对象,使其开始渲染画布。同时,我们添加了一些鼠标事件监听器,以支持鼠标拖拽移动节点连线等交互操作。 通过上述步骤,我们就可以实现一个简单的拓扑图Demo,使用litegraph和Vue来创建和展示拓扑图。当然,如需更复杂的功能,还可以进一步扩展和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值