vue+jsplumb 实现根据数据渲染出连线绘图

jsPlumb是一个比较强大的绘图组件,它提供了一种方法,主要用于连接网页上的元素。在现代浏览器中,它使用SVG或者Canvas技术,而对于IE8以下(含IE8)的浏览器,则使用VML技术。

以往文章
vue+jsplumb 实现连线绘图
vue3.x 使用jsplumb进行拖拽连线
jsplumb 点击节点或者连线高亮显示

下面介绍根据已知数据绘制连线
效果图

  1. 安装
npm install jsplumb --save
  1. main.js 引入
import jsPlumb from 'jsplumb'
Vue.prototype.$jsPlumb = jsPlumb.jsPlumb
  1. 示例代码
<template><div><div id="container"><div class="left"><ul><li v-for="(item,index) in leftList" :key="'left' + index" :id="item.nodeId" name="source">{{item.name}}</li></ul></div><div class="right"><ul><li v-for="(item,index) in rightList" :key="'right' + index" :id="item.nodeId" name="target">{{item.name}}</li></ul></div></div></div>
</template><script>export default {name: "jsplumbDemo",data() {return {jsPlumb: null, // 缓存实例化的jsplumb对象leftList:[{name: 'xxx_left_1', nodeId: 'left_1'},{name: 'xxx_left_2', nodeId: 'left_2'},{name: 'xxx_left_3', nodeId: 'left_3'},{name: 'xxx_left_4', nodeId: 'left_4'}],rightList:[{name: 'xxx_right_1', nodeId: 'right_1'},{name: 'xxx_right_2', nodeId: 'right_2'},{name: 'xxx_right_3', nodeId: 'right_3'},{name: 'xxx_right_4', nodeId: 'right_4'}],canvasData:{lineList: [{from: 'left_1',to: 'right_1',label: '连线名称1'},{from: 'left_1',to: 'right_3',label: '连线名称2'},{from: 'left_2',to: 'right_3',label: '连线名称3'},{from: 'left_4',to: 'right_4',label: '连线名称4'}]}}},mounted(){this.showPlumb();},methods:{showPlumb() {this.jsPlumb = this.$jsPlumb.getInstance({Container: 'container', // 选择器idEndpointStyle: {radius: 0.11, fill: '#999'}, // 端点样式PaintStyle: {stroke: '#999', strokeWidth: 2}, // 绘画样式,默认8px线宽  #456HoverPaintStyle: {stroke: '#994B0A', strokeWidth: 3 }, // 默认悬停样式  默认为nullConnectionOverlays: [ // 此处可以设置所有箭头的样式['Arrow', { // 设置参数可以参考中文文档location: 1,length: 12,paintStyle: {stroke: '#999',fill: '#999'}}]],Connector: ['Straight'], // 要使用的默认连接器的类型:直线,折线,曲线等DrapOptions: {cursor: 'crosshair', zIndex: 2000}});// jsplumb连接参数const jsplumbConnectOptions ={isSource: true,isTarget: true,// 动态锚点、提供了4个方向 Continuous、AutoDefaultanchor: "Continuous",}// 初始化连线for (var i = 0; i < this.canvasData.lineList.length; i++) {let line = this.canvasData.lineList[i]let connection = this.jsPlumb.connect({source: line.from,target: line.to,}, jsplumbConnectOptions);connection.setLabel(line.label); //初始化label}},}}
</script><style>ul{list-style: none;}#container{width: 500px;height: 500px;padding: 20px;position: relative; /*一定加上这句,否则连线位置发生错乱*/}.left{float: left;width: 150px;}.right{float: right;width: 150px;}.left li,.right li{width: 100%;border-radius: 4px;border: 1px solid #ccc;background: #efefef;margin-bottom: 20px;padding: 8px 5px;}
</style>

vue+jsplumb 实现根据数据渲染出连线绘图相关推荐

  1. Vue+element-ui实现表格数据渲染+分页

    Vue+element-ui实现表格数据渲染+分页 具体属性请看官方文档:Table 表格 这里给大家看一个比较不错的表格数据渲染的例子,也是我目前所写的项目中的一部分. 这里呢我们就不给大家说顶栏和 ...

  2. baidumap vue 判断范围_vue 数据渲染

    本文转载于 SegmentFault 社区社区专栏:山外de楼作者:山外de楼 前言 vue 是如何将编译器中的代码转换为页面真实元素的?这个过程涉及到模板编译成 AST 语法树,AST 语法树构建渲 ...

  3. python画出K线图及技术指标

    目录 安装mplfinance及Ta-lib 画图 安装mplfinance及Ta-lib mplfinance是基于matplotlib的金融数据可视化分析模块,前身是mpl_finance,比起m ...

  4. Vue.js搭建移动端购物车界面-基本结构和数据渲染

    本文介绍了如何使用Vue搭建一个移动端购物车界面,最终实现的功能包括: 1.        选择要最终购买的物品 2.        选择每件物品购买的数量 3.        实时更新所选择物品的总 ...

  5. 如何给Vue v-for循环渲染出的元素(导航栏) 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换

    如何给Vue v-for循环渲染出的元素 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换 能够实现或解决的问题 给Vue v-for循环出的元素批量添加点击事件,并以自己在数组中 ...

  6. Antd Table树形展示,分页后有时候数据渲染不出的问题

    项目场景: Antd V4版 网页端 问题描述: 使用Table树形 使用Card onTabChange 切换tab,有时候数据渲染不出的问题 const paginationProps = {Cu ...

  7. Vue绘制折线图并渲染数据

    本文讲解vue项目中使用ECharts快速绘制折线图,并将服务器传来的数据渲染上去,提供源代码,可以直接复制粘贴使用. 效果展示: Vue 通常使用ECharts 生成图表,官网地址: Apache ...

  8. vue接口多个参数多个组件互动导致数据渲染混乱bug

    问题 : 当接口参数太多时候, 组件太多的时候, 参数变化条件很多的时候 会出现事件队列混乱, 数据混乱 解决方法 : 1. 减少事件队列, 接口直接写到渲染数据的组件里, 不让接口数据在其它组件再传 ...

  9. 在Vue中异步加载数据渲染到Dom

    在Vue中异步加载数据渲染到Dom 问题 <div v-for="o in resmessage" :key="o" class="text i ...

最新文章

  1. reverseString
  2. JavaScript 技术篇-js获取dom节点、html标签自定义属性的值。
  3. BFPTR算法详解+实现+复杂度证明
  4. 数据结构课上笔记13
  5. android 蓝牙通知,android – 蓝牙低能耗通知
  6. 【英语学习】【Level 07】U06 First Time L2 A good food experience
  7. mysql-优化班学习-8-20170606-MySQL索引
  8. deepin/Ubuntu搭建FTP/SFTP
  9. 用c#开发微信(10) JSSDK 基本用法 分享接口“发送到朋友”
  10. 产品经理面试(题目+答案)
  11. AlteraFPGA使用通用SPIFlash
  12. CorelDRAW2020下载使用教程详解
  13. java调用dao_Servlet里面一调用Dao里的某个方法
  14. 19 统计量及其抽样分布——样本均值的分布与中心极限定理
  15. oc实时渲染的图如何导出_如何使用C4D制作逼真的循环三维动画
  16. [ Linux RK ] 更改网卡名字|CSDN创作打卡
  17. java七牛云图片压缩_七牛云 CDN 历史图片批量压缩
  18. shopee数据分析:虾皮卖家如何正确分析shopee卖场数据?
  19. 实现单选框的css,7款纯CSS实现不错的自定义单选框
  20. 机器学习基础知识点⑤数据增强、类别不平衡

热门文章

  1. 计算机系统不认,重做系统电脑不认u盘怎么办
  2. 数据可视化原理_格式塔原理是数据可视化的实用方面
  3. emule中节点加入Kad网络过程(源代码详解)【对原文部分改进】
  4. 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法
  5. 注册机解压缩后为空文件解决方案
  6. 加入雷锋网,与智能未来同行
  7. python气象绘图速成_Python气象绘图Day-By-Day
  8. 学习日志,更新起点爬虫,下载已经付费订阅vip的章节
  9. 【总结】 ---ACM为什么这么难
  10. 广数25i系统倒刀回刀m代码_GSK-25i数控铣床加工中心系统介绍