jsPlumb初认识

hello,大家好,我是前端小老弟儿,最近老弟儿接到这样一个需求,实现一个流程图,可以连线,右键操作,以及删除连线等,如下所示得流程图。使用得插件是: jsPlumb;所以就简单的介绍一下jsPlumb基本使用什么是jsplumbjsPlumb是一个强大得JavaScript连线库,提供html元素的拖放、连线等功能,可绘制不同类型、样式的连线,适用于开发web页面的图表、建模工具等。同时也支持vue2.0 ,react和Angular 。jsplumb 能干什么?该框架适用于必须回值图表得web
摘要由CSDN通过智能技术生成

hello,大家好,我是前端小老弟儿,最近老弟儿接到这样一个需求,实现一个流程图,可以连线,右键操作,以及删除连线等,如下所示得流程图。使用得插件是: jsPlumb;所以就简单的介绍一下jsPlumb基本使用
在这里插入图片描述

什么是jsplumb

jsPlumb是一个强大得JavaScript连线库,提供html元素的拖放、连线等功能,可绘制不同类型、样式的连线,适用于开发web页面的图表、建模工具等。同时也支持vue2.0 ,react和Angular 。

jsplumb 能干什么?

该框架适用于必须回值图表得web应用程序,比如流程图设计,组织架构图设计等。

jsplumb的基本使用:

  1. 配置jsPlumb
npm install jsplumb
  1. 引入
import {
    jsPlumb } from "jsplumb";

jsplumb的基本方法:

  1. ready() 确保jsPlumb 插件已经开始渲染
jsPlumb.ready(function() {
   
    ...
    // your jsPlumb related init code goes here
    ...
});
  1. batch() 绘制节点以及节点相关信息
jsPlumb.batch(function() {
   
  // import here
  for (var i = 0, j = connections.length; i < j; i++) {
   
      jsPlumb.connect(connections[i]);
  }
});
  1. bind() jsPlumb 节点渲染完成后,在这里可以添加事件,在初始化时,直接添加事件
 // 连线事件
 jsPlumb.bind("connection", (info, event) => {
   
        this.bindLinkEvent(info.connection);
        this.data.links.push([info.sourceId, info.targetId]);
      });
  1. getInstance()
    jsPlumb默认注册在浏览器的window对象中,为整个页面提供了一个静态实例(jsPlumb)可以直接使用,当然你也可以使用getInstance方法来单独创建一个实例。即:
this.flowInst = jsPlumb.getInstance();

同时,getInstance方法接受一个参数,可以更改实例的配置

this.flowInst = jsPlumb.getInstance({
   
    Connector : [ "Bezier", {
    curviness: 150 } ],
    Anchors : [ "TopCenter", "BottomCenter" ],
    ...
});
  1. jsPlumb.connect(…) 用于创建连线
this.flowInst.connect({
   
        source: 'item_left', // 源
        target: 'item_right', // 目标
        endpoint: 'Dot' // 线的类型
      })
  1. jsPlumb.addEndpoint(…) 用来增加端点
// id: 增加端点得id
// common:端点的配置信息
this.flowInst.addEndpoint(id,{
   common})
this.flowInst.addEndpoint('item_left', {
   
        anchors: ['Right']
      })
  1. jsPlumb.draggable() 节点是否可拖拽
let common = {
    
        containment?: string
        start?: (params:DragEventCallbackOptions) => void
        drag?: (params:DragEventCallbackOptions) => void
        stop?: (params:DragEventCallbackOptions) => void
        cursor?: string
        zIndex?: number
}
this.flowInst.draggable(node._id, {
   common}); // 

此方法有两个参数:
第一个参数为可拖拽节点的id,
第二个参数为函数对象,有6个参数,start,drag,stop 三个函数中可以获取元素节点位置等。

基本配置

{
   
    Anchor: "BottomCenter", //锚点位置,如left,top,bottom等;对任何没有声明描点的Endpoint设置锚点,用于source及诶单或target节点
    Anchors: [ null, null ], //连线的source和target Anchor
    ConnectionsDetachable: true, //连线是否可用鼠标分离
    ConnectionOverlays: [  //连线的叠加组件,如箭头、标签
        ["Arrow", {
     //箭头参数设置
        
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值