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各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
js图片模糊切换显示特效的方法
Feb 17 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 Javascript
javascript关于继承解析
May 10 Javascript
PHP7新特性简述
Jun 11 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
vue2里面ref的具体使用方法
Oct 27 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
夯基础之手撕javascript继承详解
Nov 09 Javascript
gojs实现蚂蚁线动画效果
Feb 18 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之PHP语法学习笔记1
2006/12/17 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
Python复制文件操作实例详解
2015/11/10 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
英国网上花店:Bunches
2016/11/29 全球购物
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
会计电算化专业毕业生推荐信
2013/12/24 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
大学毕业寄语大全
2014/04/10 职场文书
专家推荐信模板
2014/05/09 职场文书
激励员工的口号
2014/06/16 职场文书
毕业生工作求职信
2014/06/30 职场文书
员工安全责任书范本
2014/07/24 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
车间质检员岗位职责
2015/04/08 职场文书
信仰纪录片观后感
2015/06/08 职场文书
宾馆客房管理制度
2015/08/06 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL