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 相关文章推荐
javascript之dhDataGrid Ver2.0.0代码
Jul 01 Javascript
div层的移动及性能优化
Nov 16 Javascript
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 Javascript
js实现目录定位正文示例
Nov 14 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
Boostrap入门准备之border box
May 09 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
Jun 01 Javascript
vue解决跨域问题(推荐)
Nov 10 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
简单易用的计数器(数据库)
2006/10/09 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
Python实现代码块儿折叠
2020/04/15 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
护理学专业推荐信
2013/12/03 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
财产公证书样本
2014/04/04 职场文书
消防工作实施方案
2014/06/09 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
小学优秀教师材料
2014/12/15 职场文书
秋菊打官司观后感
2015/06/03 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书
Python绘画好看的星空图
2022/03/17 Python