Vue使用jsmind实现生成脑图的示例代码

 更新时间:2024年03月29日 09:51:58   作者:weixin_43688734  
这篇文章主要为大家详细介绍了Vue如何使用jsmind实现生成脑图,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下

项目部分参数:

vue:2.6.10

node:16.20.0

1、使用命令行安装jsmind

npm i jsmind -S

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

<template>
	<!-- jsmind容器 -->
    <div
      id="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", // 必选,容器ID
              editable: 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;
  }
}

到此这篇关于Vue使用jsmind实现生成脑图的示例代码的文章就介绍到这了,更多相关Vue jsmind生成脑图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue UI框架的主题切换功能实现

    Vue UI框架的主题切换功能实现

    在如今,很多网页已经可以手动切换明亮模式和黑暗模式,网页的主题切换已经成为了一个常用的需求,因此,本文将从常见框架的处理方式总结一些相关的操作,对vue ui框架主题切换功能感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • 记一次Vue中$route序列号报错

    记一次Vue中$route序列号报错

    本文主要介绍了记一次Vue中$route序列号报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • vue axios封装及API统一管理的方法

    vue axios封装及API统一管理的方法

    这篇文章主要介绍了vue axios封装以及API统一管理 ,需要的朋友可以参考下
    2019-04-04
  • vue3.0基于views批量实现动态路由的方法(示例代码)

    vue3.0基于views批量实现动态路由的方法(示例代码)

    以前vue项目中也有很多实现动态路由的方法,比如有一些项目涉及权限的可能会使用api请求路由数据在来createRouter,或者本地构建使用routes.push来动态构建路由, 今天介绍一种新的方式来基于某个文件夹批量构建动态路由的方法,感兴趣的朋友一起看看吧
    2024-12-12
  • vue中el-tab如何点击不同标签触发不同函数的实现

    vue中el-tab如何点击不同标签触发不同函数的实现

    el-tab本身的功能是点击之后切换不同页,本文主要介绍了vue中el-tab如何点击不同标签触发不同函数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 一文详解如何在Vue3中使用jsx/tsx

    一文详解如何在Vue3中使用jsx/tsx

    本篇文章旨在带领大家快速了解和使用 Vue 中的 JSX 语法,好让大家在 Vue 中遇到或使用 JSX 的时候能很快入手,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • Vue项目在IE浏览器的兼容问题及解决方法

    Vue项目在IE浏览器的兼容问题及解决方法

    该文章主要介绍了如何在Vue项目中解决IE浏览器的兼容性问题,包括解决IE不兼容axios的Promise对象、ES6语法以及polyfill的使用方法,通过配置babel-polyfill、es6-promise和转ES5语法,解决了在IE浏览器中常见的兼容性问题,需要的朋友可以参考下
    2025-01-01
  • vue 输入框输入任意内容返回数字的实现

    vue 输入框输入任意内容返回数字的实现

    本文主要介绍了vue 输入框输入任意内容返回数字的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • vue中如何将日期转换为指定的格式

    vue中如何将日期转换为指定的格式

    这篇文章主要介绍了vue中如何将日期转换为指定的格式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue收集表单数据和过滤器总结

    Vue收集表单数据和过滤器总结

    这篇文章主要介绍了Vue收集表单数据和过滤器的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05

最新评论