Home  >  Article  >  Web Front-end  >  How to use jsmind to implement mind map map templates and preset settings in a Vue project?

How to use jsmind to implement mind map map templates and preset settings in a Vue project?

WBOY
WBOYOriginal
2023-08-15 17:02:071757browse

How to use jsmind to implement mind map map templates and preset settings in a Vue project?

How to use jsmind to implement mind map map templates and preset settings in a Vue project?

Introduction:
Mind map is a commonly used thinking tool that can help us organize and sort out our thinking. Using mind maps in Vue projects sometimes involves map templates and preset settings. This article will introduce how to use the jsmind library to implement this function.

1. Preparation

Before we start, we need to prepare some necessary work:

  1. Create a new Vue project and install jsmind library.

    npm install jsmind --save
  2. In the root directory of the Vue project, create a new jsmind component.

    src/components/MindMap.vue
  3. In the created jsmind component, introduce the jsmind library and create a container element.

    <template>
      <div id="jsmind_container"></div>
    </template>
    
    <script>
    import jsMind from 'jsmind'
    
    export default {
      mounted() {
        this.initMindMap()
      },
      methods: {
        initMindMap() {
          var mind = {
            /* 根节点 */
            "meta":{
              "name":"jsMind",
              "author":"hizzgdev@163.com",
              "version":"1.0"
            },
            /* 根节点的孩子节点 */
            "format":"node_tree",
            "data":{
              "id":"root",
              "topic":"jsMind"
            }
          };
          
          /* 创建思维导图 */
          var options = {
            container:'jsmind_container',
            editable:false,   /* 设为false,仅展示导图 */
            theme:'primary'   /* 设置主题颜色,可自定义 */
          };
          var jm = new jsMind(options);
          jm.show(mind);
        }
      }
    }
    </script>

2. Map template settings

  1. Define a variable in the jsmind component to store the data of the map template.

    data() {
      return {
        templateData: {
          "meta":{
            "name":"Template",
            "author":"Your Name",
            "version":"1.0"
          },
          "format":"node_array",
          "data":[
            {
              "id":"root",
              "topic":"Template",
              "children":[
                {
                  "id":"node1",
                  "topic":"Node 1"
                },
                {
                  "id":"node2",
                  "topic":"Node 2"
                }
              ]
            }
          ]
        }
      }
    }
  2. Create a button and use the data from the map template to generate a map after clicking the button.

    <template>
      <div>
        <button @click="loadTemplate">加载模板</button>
        <div id="jsmind_container"></div>
      </div>
    </template>
    
    <script>
    export default {
      methods: {
        loadTemplate() {
          /* 清空之前的导图 */
          var container = document.getElementById("jsmind_container");
          container.innerHTML = "";
    
          /* 创建新的导图 */
          var options = {
            container:'jsmind_container',
            editable:false,
            theme:'primary'
          };
          var jm = new jsMind(options);
          jm.show(this.templateData);
        }
      }
    }
    </script>

3. Default settings

  1. Define a variable in the jsmind component to store the data of the default settings.

    data() {
      return {
        presetsData: {
          "preset1": {
            "id":"preset1",
            "topic":"Preset 1",
            "children":[
              {
                "id":"node1",
                "topic":"Node 1"
              },
              {
                "id":"node2",
                "topic":"Node 2"
              }
            ]
          },
          "preset2": {
            "id":"preset2",
            "topic":"Preset 2",
            "children":[
              {
                "id":"node3",
                "topic":"Node 3"
              },
              {
                "id":"node4",
                "topic":"Node 4"
              }
            ]
          }
        }
      }
    }
  2. Create two buttons and use different preset settings to generate maps after clicking the buttons.

    <template>
      <div>
        <button @click="loadPreset1">加载预设1</button>
        <button @click="loadPreset2">加载预设2</button>
        <div id="jsmind_container"></div>
      </div>
    </template>
    
    <script>
    export default {
      methods: {
        loadPreset1() {
          /* 清空之前的导图 */
          var container = document.getElementById("jsmind_container");
          container.innerHTML = "";
    
          /* 创建新的导图 */
          var options = {
            container:'jsmind_container',
            editable:false,
            theme:'primary'
          };
          var jm = new jsMind(options);
          jm.show(this.presetsData["preset1"]);
        },
        loadPreset2() {
          /* 清空之前的导图 */
          var container = document.getElementById("jsmind_container");
          container.innerHTML = "";
    
          /* 创建新的导图 */
          var options = {
            container:'jsmind_container',
            editable:false,
            theme:'primary'
          };
          var jm = new jsMind(options);
          jm.show(this.presetsData["preset2"]);
        }
      }
    }
    </script>

Conclusion:
Through the above steps, we can use the jsmind library to implement mind map map templates and preset settings in the Vue project. In this way, we can create, load and manage mind maps more conveniently and improve work efficiency. If you have other needs or more functional expansion, the jsmind library also provides a rich API for us to use. I hope this article can be helpful to everyone!

The above is the detailed content of How to use jsmind to implement mind map map templates and preset settings in a Vue project?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn