David-Desmaisons / Vue.D3.tree

Vue component to display tree based on D3.js layout.
https://david-desmaisons.github.io/Vue.D3.tree/tree
MIT License
874 stars 136 forks source link

Node structure does not update when the data is updated via code #83

Open tauseef-r-kazi opened 2 years ago

tauseef-r-kazi commented 2 years ago

I am using v-model="pointer" to track the currently selected node. however, if I add a child node using the below code it does not reflect under this.pointer.children array. How can the under lying graph object be updated from the parent component?

addCondition(data) {
          const newData = {
                name: "NewNode",
                id: this.indexCounter++,
                type: "newType",
                children: []
          }
          data.children.push(newData);
      }

component definition: <tree ref="tree" class="tree-class" :data="graph" v-model="pointer" node-text="name" layoutType="horizontal" :identifier="getId" @clickedText="onNodeTextClick" :zoomable="true" :marginX="0" :marginY="0">

fardinvahdat commented 1 year ago

yes youre right. use :key for update your DOM whenever your state updated. your code should by s.t like this: <tree :key="counter" ref="tree" class="tree-class" :data="graph" v-model="pointer" node-text="name" layoutType="horizontal" :identifier="getId" @clickedText="onNodeTextClick" :zoomable="true" :marginX="0" :marginY="0"/>`

addCondition(data) {
          const newData = {
                name: "NewNode",
                id: this.indexCounter++,
                type: "newType",
                children: []
          }
          data.children.push(newData);
this.counter++
      }