vue中使用mxgraph的方法实例代码详解


Posted in Javascript onMay 17, 2019

1、npm 引入

npm install mxgraph --save

2、这个模块可以使用require()方法进行加载。它将返回一个接受对象作为选项的工厂函数。必须将mxBasePath选项提供给工厂函数,而不是将其定义为一个全局变量。

var mxgraph = require("mxgraph")(
{ // 以下地址不需要修改
mxImageBasePath: "./src/images", 
mxBasePath: "./src"
})

工厂函数返回一个“命名空间对象”,通过它可以访问mxGraph包的所有对象。例如,mxEvent对象在mxgraph.mxEvent中可用。

var mxEvent = mxgraph.mxEvent;
mxEvent.disableContextMenu(container);

这个引入是官方提供的方式,但是与vue结合使用的时候,方法的指向会发生变化,所以做了以下修改

避免方法的指向发生变化,将其挂载到window上面:

建立index.js如下:

import mx from 'mxgraph';
const mxgraph = mx({
 mxImageBasePath: './src/images',
 mxBasePath: './src'
});
// decode bug https://github.com/jgraph/mxgraph/issues/49
window.mxGraph = mxgraph.mxGraph;
window.mxGraphModel = mxgraph.mxGraphModel;
window.mxEditor = mxgraph.mxEditor;
window.mxGeometry = mxgraph.mxGeometry;
window.mxDefaultKeyHandler = mxgraph.mxDefaultKeyHandler;
window.mxDefaultPopupMenu = mxgraph.mxDefaultPopupMenu;
window.mxStylesheet = mxgraph.mxStylesheet;
window.mxDefaultToolbar = mxgraph.mxDefaultToolbar;
export default mxgraph;

页面引入:

import mxgraph from 'index.js';
const {mxGraph, mxClient, mxCodec, mxUtils, mxConstants, mxPerimeter} = mxgraph;

3、书写‘hello world' demo

mounted () {
      if (!mxClient.isBrowserSupported()) {
        // 判断是否支持mxgraph
        mxUtils.error('Browser is not supported!', 200, false);
      } else {
        // 再容器中创建图表
        let container = document.getElementById('graphContainer');
        let MxGraph = mxGraph;
        let MxCodec = mxCodec;
        var graph = new MxGraph(container);
        // 生成 Hello world!
        var parent = graph.getDefaultParent();
        graph.getModel().beginUpdate();
        try {
          var v1 = graph.insertVertex(parent, null, 'Hello,', 20, 200, 80, 30);
          var v2 = graph.insertVertex(parent, null, 'World', 200, 150, 80, 30);
          var v3 = graph.insertVertex(parent, null, 'everyBody!', 300, 350, 60, 60);
          graph.insertEdge(parent, null, '', v1, v2);
          graph.insertEdge(parent, null, '', v2, v3);
          graph.insertEdge(parent, null, '', v1, v3);
        } finally {
          // Updates the display
          graph.getModel().endUpdate();
        }
        // 打包XML文件
        let encoder = new MxCodec();
        let xx = encoder.encode(graph.getModel());
        // 保存到getXml参数中
        this.getXml = mxUtils.getXml(xx);
      }
    }

总结

以上所述是小编给大家介绍的vue中使用mxgraph的方法实例代码详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
js日期联动示例
May 02 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
vue 注册组件的使用详解
May 05 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
微信小程序轮播图swiper代码详解
Dec 01 Javascript
vue中引入mxGraph的步骤详解
May 17 #Javascript
微信小程序云开发 搭建一个管理小程序
May 17 #Javascript
微信小程序云开发实现增删改查功能
May 17 #Javascript
微信小程序云开发实现云数据库读写权限
May 17 #Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 #Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 #Javascript
js常用正则表达式集锦
May 17 #Javascript
You might like
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
prototype1.4中文手册
2006/09/22 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
对比分析json及XML
2014/11/28 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
团员的自我评价
2013/12/01 职场文书
教师党员整改措施
2014/10/24 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
python中对列表的删除和添加方法详解
2022/02/24 Python