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中点号“.”的多义性
Dec 02 Javascript
js中传递特殊字符(+,&)的方法
Jan 16 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
node.js中的fs.chown方法使用说明
Dec 16 Javascript
javascript验证身份证号
Mar 03 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
Mar 23 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
夯基础之手撕javascript继承详解
Nov 09 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
javascript读取RSS数据
2007/01/20 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
Javascript浅谈之this
2013/12/17 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
跟老齐学Python之list和str比较
2014/09/20 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python简单的制作图片验证码实例
2017/05/31 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
联想C++笔试题
2012/06/13 面试题
商务助理岗位职责
2013/11/13 职场文书
快递业务员岗位职责
2014/01/06 职场文书
社团成立邀请函
2014/01/08 职场文书
道德之星事迹材料
2014/05/03 职场文书
信仰心得体会
2014/09/05 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
付款委托书范本
2014/10/05 职场文书
Python3接口性能测试实例代码
2021/06/20 Python