# Vue版小蝴蝶(butterfly-vue) {ignore=true} ## 安装 {ignore=true} ``` bash $ npm i butterfly-vue butterfly-dag -S ``` - [用法](#用法) - [属性](#属性) - [canvasConf](#canvasconf) - [canvasData](#canvasdata) - [`canvasData.render`渲染方式(两种)](#canvasdatarender渲染方式两种) - [Object类型(.vue文件)推荐使用](#object类型vue文件推荐使用) - [String类型(template)](#string类型template) - [方法](#方法) - [自定义锚点使用](#自定义锚点使用) ## 用法 ``` JS //mockData.js const endpoints = [ { id: 'right', orientation: [1, 0], pos: [0, 0.5] }, { id: 'left', orientation: [-1, 0], pos: [0, 0.5] } ]; export default { groups: [ { id: '1', left: 10, top: 20, }, ], nodes: [ { id: '1', group: '1', top: 40, left: 20, endpoints: endpoints, }, { id: '2', top: 50, left: 300, endpoints: endpoints, }, ], edges: [{ id: '1-2', sourceNode: '1', targetNode: '2', source: 'right', target: 'left', }], }; ``` ``` vue // component.vue ``` ## 属性 | Prop | 类型 | 说明 | 默认值 | required | | :-----------: | ----------------- | ------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------: | :------: | | canvasConf | Object | 参考官网[定义](https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/canvas.md#canvas-attr) | [见下文](#canvasConf) | false | | baseCanvas | Function | 参考官网[定义](https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/canvas.md) | import { Canvas } from "butterfly-dag"; | false | | canvasData | Object | [见下文](#canvasData) | | true | | className | String | 追加在最外层`div`上的`class`直接替换掉`butterfly-vue`样式 | `butterfly-vue` | false | | onChangeEdges | (data) => void; | 线改变触发(system.link.reconnect) | | false | | onCreateEdge | (data) => void; | 线创造触发(system.link.connect) | | false | | onDeleteEdge | (data) => void; | 线删除触发(system.links.delete) | | false | | onOtherEvent | (data) => void; | [butterfly-dag中api](https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/canvas.md#canvas-api-events) 中除上述3种 | | false | | onLoaded | (VueCom) => void; | 画布加载完毕后返回`ButterflyVue`实例(VueCom.canvas就是原生的canvas) | | false | ### canvasConf ``` js // canvasConf默认值: const defaultOptions = { disLinkable: true, // 可删除连线 linkable: true, // 可连线 draggable: true, // 可拖动 zoomable: true, // 可放大 moveable: true, // 可平移 theme: { edge: { arrow: true, type: 'Straight', } } }; ``` ### canvasData * `render`参数后文会详细说明 ``` js // canvasData说明: let canvasData = { groups: [ id: String; //必填 left: Number //必填 top: Number //必填 render: String|Object; //选填(若为Sring类型需要符合vue的template规则) //(若为Object类型需要符合.vue文件编译后的类型,此处即为直接传入.vue文件) //其他属性参考官方https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/group.md ], nodes: [ id: String; //必填 render: String|Object; //选填(若为Sring类型需要符合vue的template规则) //(若为Object类型需要符合.vue文件编译后的类型,此处即为直接传入.vue文件) //其他属性参考官网https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/node.md#node-attr ], edges: [ id: String; //必填 render: String|Object; //选填(若为Sring类型需要符合vue的template规则) //(若为Object类型需要符合.vue文件编译后的类型,此处即为直接传入.vue文件) //其他属性参考官方https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/edge.md ] } ``` ### `canvasData.render`渲染方式(两种) * 两种类型:`String|Object` #### Object类型(.vue文件)推荐使用 ``` vue // grid-node.vue ``` ``` vue // component.js ``` #### String类型(template) ``` vue // component.js ``` * 因为`String`类型使用了运行时编译,所以需要启用以下配置 ``` JS //vue.config.js module.exports = { runtimeCompiler: true } ``` ## 方法 | 方法名 | 说明 | 参数 | | :----: | ------------ | :---: | | redraw | 重新绘制画布 | `-` | ``` vue ``` ## 自定义锚点使用 ``` vue // endpoint-node.vue ``` ``` vue // component.vue ``` | Prop | 类型 | 说明 | 默认值 | required | | --------- | ------ | ------------------------ | ----------------------- | -------- | | id | String | 自定义endpoint的唯一标示 | | true | | className | String | 自定义endpoint的样式 | vue-bf-endpoint-default | false | | param | Object | endponit的其他参数 | | false | [param属性参考地址](https://github.com/alibaba/butterfly/blob/master/docs/zh-CN/endpoint.md#%E5%B1%9E%E6%80%A7)