Vue と jsmind を使用してマインド マップのノード アンカー ポイントと接続制御を実現します
マインド マップは一般的に使用される思考と手法です。情報を整理するためのツール。問題を明確に提示して分析し、解決策を計画するのに役立ちます。 Web アプリケーションにマインド マッピング機能を実装すると、ユーザーがアイデアをより適切に整理および管理できるようになります。この記事では、Vueとjsmindライブラリを使ってマインドマップのノードアンカーポイントと接続制御を実現する方法を紹介します。
マインド マップ機能を簡単に使用するために、基本的なマインド マップ コンポーネントを作成できます。まず、Vue プロジェクトに jsmind ライブラリをインストールする必要があります。次のコマンドでインストールできます:
npm install jsmind --save
次に、jsmind ライブラリとスタイルを Vue コンポーネントに導入し、マインド マップをレンダリングするための <div>
要素を作成します。コードは次のとおりです。
<template> <div ref="mindContainer"></div> </template> <script> import 'jsmind/style/jsmind.css' import jsMind from 'jsmind' export default { name: 'MindMap', mounted() { this.initMindMap() }, methods: { initMindMap() { var mind = { /* 在这里定义思维导图的数据 */ } var options = { container: this.$refs.mindContainer, editable: true, // 是否可以编辑节点 theme: 'default' } new jsMind(options).show(mind) } } } </script> <style scoped> .mind-container { width: 100%; height: 100%; } </style>
上記のコードを通じて、MindMap
コンポーネントを作成し、それに jsmind ライブラリを導入し、マインド マップ インスタンスを初期化しました。これで、このコンポーネントを Vue プロジェクトで使用して、基本的なマインド マップ表示効果を確認できるようになりました。
ノードアンカーポイントと接続制御の機能を実現するには、アンカーポイントの表示を制御するボタンを各ノードに追加する必要があります。非表示にし、ノードにイベント リスナーを追加して接続操作を完了します。
まず、initMindMap
メソッドですべてのノードを取得し、各ノードにボタン要素を追加します。コードは次のとおりです。
initMindMap() { // ... this.$refs.mindContainer.addEventListener('mousedown', (event) => { var target = event.target if (target.classList.contains('expanded')) { // 当前节点已经展开,不进行操作 return } if (target.tagName === 'jmnode') { var node = target.jmnode var button = document.createElement('button') button.classList.add('anchor-button') button.innerText = '连线' button.addEventListener('click', () => { this.startConnect(node) }) target.append(button) } }) }
上記のコードでは、要素が jmnode
(つまり、マインド マップ要素のノード)、ノードのボタンを作成し、ボタンに click
イベント リスナーを追加します。 次に、各ノードに接続操作を追加できます。
まず、接続されたノードに応答する 2 つの一時変数を追加して、これら 2 つのノードが選択されているかどうかを記録する必要があります。コードは次のとおりです。
data() { return { // ... selectedNode1: null, selectedNode2: null } }
次に、
startConnect メソッドを追加し、このメソッドで、クリックされたノードに基づいて接続するかどうかを選択します。コードは次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:javascript;toolbar:false;'>methods: {
startConnect(node) {
if (!this.selectedNode1) {
this.selectedNode1 = node
} else if (!this.selectedNode2) {
this.selectedNode2 = node
this.connectNodes(this.selectedNode1, this.selectedNode2)
this.selectedNode1 = null
this.selectedNode2 = null
}
},
connectNodes(node1, node2) {
// 在这里实现连线的逻辑
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
上記のコードでは、ノードがクリックされると、
が空の場合、ノードは selectedNode1
に割り当てられます。 selectedNode1
が空ではなく、selectedNode2
が空である場合は、ノードを selectedNode2
に割り当て、connectNodes
メソッドを呼び出してノード接続ロジックを実行します。 ; 最後に、接続が完了したら、selectedNode1
と selectedNode2
を空に再割り当てします。
メソッドでは、jsmind が提供する API メソッドを使用して 2 つのノードを接続できます。コードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:javascript;toolbar:false;'>connectNodes(node1, node2) {
var mindData = this.mind.data
var nodeData1 = mindData.getNodeData(node1.id)
var nodeData2 = mindData.getNodeData(node2.id)
if (!nodeData1 || !nodeData2) {
return
}
var edgeId = '__connect_edge_' + node1.id + '_' + node2.id
if (mindData.getLinkData(edgeId)) {
return
}
var linkData = {
id: edgeId,
src: node1.id,
target: node2.id
}
mindData.addLinkData(linkData)
this.mind.show(mindData)
}</pre><div class="contentsignin">ログイン後にコピー</div></div> 上記のコードでは、まずマインド マップのデータ オブジェクト mindData<p> を取得し、その <code>getNodeData# を通じて接続する 2 つを取得します。 ## メソッド ノードのデータ。次に、一意の ID を持つ接続データ オブジェクト
linkData を作成し、
addLinkData を通じて接続データを
mindData に追加します。メソッド ;最後に、
show メソッドを通じてマインド マップ インスタンスの表示を更新します。
ここまでで、マインドマップのノードアンカーポイントと接続制御の機能実装が完了しました。このマインド マップ コンポーネントを使用する場合、ユーザーはノード上のボタンをクリックして接続の開始点と終了点を選択し、接続操作を通じてノード間の関連付けを確立できます。
以上がVue と jsmind を使用してマインド マップのノード アンカーと接続制御を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。