ホームページ > 記事 > ウェブフロントエンド > Vue と jsmind を使用してマインド マップにノードのマージと分割の操作を実装するにはどうすればよいですか?
Vue と jsmind を使用して、マインド マップでノードのマージと分割の操作を実装するにはどうすればよいですか?
マインド マップは、情報を整理して表示するための一般的なツールであり、ツリー構造のノードと接続線を通じて考えや意見を整理して表示します。実際のアプリケーションでは、情報をより適切に管理および表示するために、マインド マップ内のノードを結合および分割する必要がある場合があります。この記事では、Vue ライブラリと jsmind ライブラリを使用してマインド マップにノードのマージと分割操作を実装する方法を紹介し、対応するコード例を示します。
まず、Vue ライブラリと jsmind ライブラリを導入する必要があります。 CDN 経由で導入することも、npm 経由でインストールして導入することもできます。次に、マインド マップをホストする Vue コンポーネントを作成する必要があります。
<template> <div id="jsmind-container"></div> </template> <script> export default { mounted() { this.initMindMap(); }, methods: { initMindMap() { const options = { container: 'jsmind-container', editable: true, theme: 'primary' // 其他配置项 }; const mind = { meta: { name: '思维导图', author: 'Vue+jmind', version: '1.0' }, format: 'free', data: [ // 初始节点数据 ], }; this.mindMap = jsMind.show(options, mind); } } } </script> <style> #jsmind-container { width: 100%; height: 500px; } </style>
Vue コンポーネントのマウントされたフック関数で、initMindMap
メソッドを呼び出してマインド マップを初期化します。まず、options
オブジェクトを定義します。このオブジェクトの container
属性はマインド マップのコンテナ要素の ID を指定し、editable
属性は次のように設定されます。 true
マインド マップが編集可能であり、使用するテーマを指定するために theme
属性が「primary」に設定されていることを示します。次に、mind
オブジェクトを定義して、マインド マップの初期ノード データを設定しました。これは単なる空のデータであり、実際の状況に応じて入力する必要があります。
次に、ノードのマージ操作を実装する必要があります。マインド マップでは、隣接する複数のノードを 1 つのノードにマージすることで、冗長な情報とノードの数を減らすことができます。 Vue コンポーネントでは、適切な場所にボタンを追加して、ノードのマージ操作をトリガーできます。
<template> <div> <div id="jsmind-container"></div> <button @click="mergeNodes">合并节点</button> </div> </template> <script> export default { methods: { mergeNodes() { const selectedNodes = this.mindMap.get_selected_node(); // 获取选中的节点 const parent = selectedNodes[0].parent; // 获取选中节点的父节点 // 获取选中节点的子节点 const children = selectedNodes.map(node => { return { ...node, children: node.children }; }); // 创建新的节点 const mergedNode = { id: 'newNode', topic: '合并节点', children: children }; // 更新父节点的子节点数据 const parentData = parent.data; const index = parentData.findIndex(node => node.id === selectedNodes[0].id); parentData.splice(index, 1, mergedNode); this.mindMap.update_node(parent, parentData); // 更新父节点数据 } } } </script>
mergeNodes
メソッドでは、まず this.mindMap.get_selected_node()
メソッドを通じて選択されたノードを取得し、次に parent# を通じて選択したノードを取得します。 ## 属性 このノードの親ノードを取得します。次に、
map メソッドを使用して、選択したノードを新しいノード データに変換し、元の子ノード データを保存します。次に、新しいノードを作成し、選択したノードの子ノードを新しいノードの子ノード属性として使用します。次に、親ノードの子ノード データを更新し、
this.mindMap.update_node メソッドを使用して親ノードのデータを更新します。
<template> <div> <div id="jsmind-container"></div> <button @click="splitNode">拆分节点</button> </div> </template> <script> export default { methods: { splitNode() { const selectedNode = this.mindMap.get_selected_node()[0]; // 获取选中的节点 // 拆分节点为多个子节点 const children = selectedNode.children.map((child, index) => { return { id: 'newNode_' + index, topic: child.topic }; }); // 更新选中节点的子节点数据 this.mindMap.move_node(selectedNode, children); } } } </script>
splitNode メソッドでは、まず
this.mindMap.get_selected_node() メソッドを通じて選択したノードを取得し、次に
map メソッド 選択したノードの子ノードを複数の子ノードのデータに変換します。分割操作中は、子ノードの id 属性と topic 属性のみを変更し、それらを新しい配列に保存します。次に、
this.mindMap.move_node メソッドを使用して、選択したノードのデータを新しい子ノードのデータに置き換えます。
以上がVue と jsmind を使用してマインド マップにノードのマージと分割の操作を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。