当前位置: 首页 > news >正文

vue中使用jsmind生成脑图

项目部分参数:
vue:2.6.10
node:16.20.0

1、使用命令行安装jsmind:

npm i jsmind -S

2、在文件中引入jsmind,并编写渲染jsmind的代码::

<template><!-- jsmind容器 --><divid="jsmindContainer"ref="jsmindContainer"></div>
</template><script>
// 引入jsmind方法和样式
import "jsmind/style/jsmind.css";
import jsMind from "jsmind";// 引入获取数据的接口
import { getProjectMind } from "@/api/projectManagement";export default {data() {return {treeData: {},jsmind: ""};},created() {this.initData();},beforeDestroy() {if (this.jsmind) {this.jsmind.destroy();}},methods: {initData() {let projectId = this.$route.query.projectId;getProjectMind(projectId).then(res => {if (res.code === 200) {this.treeData = res.data;const options = {container: "jsmindContainer", // 必选,容器IDeditable: false, // 可选,是否启用编辑theme: "asphalt", // 可选,主题shortcut: {enable: true // 禁用快捷键},layout: {hspace: 50, // 节点之间的水平间距vspace: 20, // 节点之间的垂直间距pspace: 13 // 节点与连接线之间的水平间距(用于容纳节点收缩/展开控制器)},mode: "full" // 显示模式,子节点只分布在根节点右侧};// 初始化jsMind对象this.jsmind = new jsMind(options);// 让jsmind对象显示具体的脑图数据this.jsmind.show({meta: {name: "jsMind",author: "",version: "0.1"},format: "node_tree",// 数据格式官方文档有介绍data: this.treeData});}}).catch(err => {});}}
};
</script>

重启项目,报错unexpected token...,我还以为是引入jsmind的方法不对,后来我直接引入jsmind/es6/jsmind文件还是不行,也没有搜索到任何解决办法,我就尝试安装低版本的jsmind,安装了0.5.0版本的jsmind,重启项目OK了。

3、点击脑图部分节点,展示详情弹窗

在准备脑图数据的时候,我们将部分节点数据设计成了这样:
在这里插入图片描述
topic里面是a标签,当点击a标签的时候,会触发showTask事件,展示详情弹窗。
但是在脑图渲染出来之后,才发现在method里面注册的showTask事件,是触发不了的。后面尝试着将topic数据里面的onclick换为@click,看vue能否正常将其渲染为a标签的点击事件,结果还是不行,估计是因为jsmind使用了canvas,vue没有将canvas里面的元素变为模板标签。
怎么解决呢?我使用了window来帮忙注册事件,这样全局就有了showTask事件,点击a标签能够正常触发了。

// 因为window里面的this不是指向当前组件,所以需要提前注册使用
window.$$this = this;
window.showTask = function(id) {// 展示详情弹窗window.$$this.detailShow = true;// 详情弹窗获取数据window.$$this.$nextTick(() => {window.$$this.$refs.TaskDetail.init(id);});
};

最后要注意在组件的beforeDestroy生命周期中,清除数据:

beforeDestroy() {if (this.jsmind) {this.jsmind.destroy();window.showTask = undefined;window.$$this = undefined;}
}
http://www.lryc.cn/news/327248.html

相关文章:

  • yarn按包的时候报错 ../../../package.json: No license field
  • 【Python从入门到进阶】51、电影天堂网站多页面下载实战
  • 苹果CMS影视APP源码,二开版本带视频教程
  • Zigbee技术在智能农业领域的应用研究
  • Spring Cloud Gateway 中GET请求能正常访问,POST请求出现Unable to handle DataBuffer
  • 什么是git? 初步认识git 如何使用git
  • Douyin视频详情数据API接口(视频详情,评论)
  • MySQL 索引:索引为什么使用 B+树?
  • 2024年第四届天府杯全国大学生数学建模竞赛B题思路
  • c++部分题
  • 验证回文串
  • vue2高德地图选点
  • Gitflow:一种依据 Git 构建的分支管理工作流程模式
  • 利用云手机技术,开拓海外社交市场
  • 脚本实现Ubuntu设置屏幕无人操作,自动黑屏
  • 16.JRE和JDK
  • C++从入门到精通——命名空间
  • JAVA面试大全之JAVA新特性篇
  • 【ZZULIOJ】1008: 美元和人民币(Java)
  • LeetCode刷题笔记之动态规划(三)
  • Unity编辑器功能将AB资源文件生成MD5码
  • 【案例·增】获取当前时间、日期(含,SQL中DATE数据类型)
  • 什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?
  • 如何在Linux系统使用Docker本地部署Halo网站并实现无公网IP远程访问
  • 智能写作利器ChatGPT:提升论文写作效率
  • 【iOS ARKit】3D文字
  • 第二百二十八回
  • Java设计模式之单例模式(多种实现方式)
  • Miracast投屏探索
  • 2024年幻兽帕鲁服务器优惠价格表手动整理,最全报价