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 相关文章推荐
jqgrid 简单学习笔记
May 03 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
详解Vue单元测试case写法
May 24 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
通过实例解析JavaScript for in及for of区别
Jun 15 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
咖啡知识大全
2021/03/03 新手入门
PHP容易忘记的知识点分享
2013/04/30 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Javascript执行流程细节原理解析
2020/05/14 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
JS如何生成动态列表
2020/09/22 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python中open函数的基本用法示例
2019/09/07 Python
python数据分析:关键字提取方式
2020/02/24 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
linux比较文件内容的命令是什么
2015/09/23 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
五年级音乐教学反思
2014/02/06 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
社区志愿者活动方案
2014/08/18 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
干部考核工作总结2015
2015/07/24 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
SQL Server中锁的用法
2022/05/20 SQL Server