vue项目中使用jsplumb遇到的问题

安装jsplumb:

npm i jsplumb

注意jsplumb要小写 , 用 npm install jsPlumb --save 这种命令会报这样的错的: ‘jsPlumb@latest’ is not in the npm registry.

引入

(1) 可以在main.js中将jsplumb挂在vue下便于页面获取

import jsPlumb from 'jsplumb'

Vue.prototype.$jsPlumb = jsPlumb.jsPlumb

(2) 在要使用的页面引入:

import jsPlumb from 'jsplumb'

使用

参考: jsplumb中文教程

初始化

jsplumb 要放在 mounted 中, 因为它要依靠dom元素

  mounted() {
    this.jsPlumbInit();
  },
  methods: {
    jsPlumbInit() {
     
        var plumbIns = jsPlumb.jsPlumb.getInstance();
        this.plumbIns = plumbIns;
        console.log("jsPlumb实例化");
        console.log(this.plumbIns);
      
    },
  }

可以设置公共样式:

      // jsplumb 公共样式
      var common = {
        endpoint: "Blank", 
        anchor: ["Top", "Bottom", [0.5, 0, 0, -1], [0.5, 1, 0, 1]], // 锚点位置
        connector: [
          "Flowchart",
          { stub: [15, 25], cornerRadius: 5, alwaysRespectStubs: true },
        ],
        maxConnections: -1,  // 允许一个节点有无限条连线
        EndpointStyle: { radius: 4, fill: "#acd" }, //端点样式
      };

连线

 			 // label 连线
            this.plumbIns.ready(() => {
              this.plumbIns.connect(
                {
                  source: sourceNode,
                  target: targetNode,
                  paintStyle: { stroke: "Pink", strokeWidth: 1, radius: 7 },
                  overlays: [
                    ["Arrow", { width: 8, length: 8, location: 1 }],
                    [
                      "Label",
                      {
                        location: 0.9,
                        label: rela,
                        cssClass: "endpointTargetLabel1",
                        visible: true,
                        id: "label",
                      },
                    ],
                  ],
                },
                common
              );
            });

删除所有连线

ps: 不能用getAllConnections 否则删除的时候会少

      // 删除原来的所有连线
      const connections = this.plumbIns.getConnections() // 不能用getAllConnections 否则删除的时候会少
        console.log(connections)
        for (let i = 0; i < connections.length; i++) {
        this.plumbIns.deleteConnection(connections[i]);
     }

有时候绘制的时候会报错: 找不到source或者target, 是因为之前高亮的时候div没有渲染完成:

      // 等待渲染完成, 绘制连线
      setTimeout(() => {
        this.drawLabel();
      }, 500);

重新编辑后连线不能立即显示

在调用连线函数之前重新初始化一下 jsplumb 的实例 就可以了

效果:
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
使用vue-codemirror在vue项目可能会遇到一些问题。以下是一些可能的问题和解决方案: 问题1:导入vue-codemirror时出现错误。 解决方案:确认是否正确导入了vue-codemirror,并且检查导入路径是否正确。还可以尝试使用npm/yarn命令重新安装vue-codemirror,确保安装过程没有出错。 问题2:vue-codemirror不显示或样式异常。 解决方案:首先,检查vue-codemirror组件是否正确添加到Vue实例。其次,检查是否正确引入了相关的CSS文件。另外,可以尝试通过调整组件的父容器的样式来解决显示问题问题3:vue-codemirror无法读取或设置代码内容。 解决方案:确保正确绑定了代码内容的变量,例如使用v-model指令。还应检查是否正确设置了代码内容的选项,例如mode和value。 问题4:vue-codemirror无法监听代码修改。 解决方案:确认是否使用了正确的事件监听机制,例如使用@change或@input事件。另外,还可以尝试使用watch选项来监听代码内容的变化。 问题5:vue-codemirror的代码高亮或语法提示不起作用。 解决方案:确认是否正确设置了代码高亮或语法提示所需的选项,例如mode和options。还可以尝试更新vue-codemirror的版本,以便获得更好的语法支持。 总之,在使用vue-codemirror时,应该仔细检查导入、添加组件、样式设置、事件监听和选项配置等步骤,以确保能够正常使用和正确地显示代码编辑器组件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charonmomo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值