Skip to content

Latest commit

 

History

History
55 lines (40 loc) · 2.27 KB

data-binding.md

File metadata and controls

55 lines (40 loc) · 2.27 KB

Data binding

Un aspetto cruciale nell'utilizzo di è capire come associa i dati agli elementi in pagina, ovvero il binding o join dei dati.

Si tratta di un processo utilizzato per creare, aggiornare o rimuovere elementi ogni volta che i dati cambiano: il metodo preposto è .data().

.data() prende come input un array di dati e un array di elementi del documento e restituisce 3 tipi di selezioni:

  • .enter() - rappresenta gli elementi mancanti rispetto ai dati che potrebbe essere necessario creare e aggiungere al documento.
  • .exit() - rappresenta gli elementi in eccesso rispetto ai dati che potrebbe essere necessario rimuovere dal documento.
  • .update() - rappresenta gli elementi esistenti che corrispondono ai dati ma che potrebbe essere necessario modificare

La sintassi da utilizzare è selezione.data(dataArray, key) in cui:

  • selezione è una selezione di elementi che può essere anche vuota
  • .data() associa i dati dell'array agli elementi del DOM
  • key è un parametro opzionale per identificare il singolo dato, per esempio l'indice

Il codice sottostante creare il legame tra i dati e gli elementi:

d3.select('svg')
    .selectAll("circle") // selezione di elementi non ancora in pagina
    .data(data)

Per aggiungerli effettivamente allo schermo dobbiamo chiamare .enter().append('circle'):

d3.select('svg')
    .selectAll('circle')
    .data(data)
    .enter()
    .append('circle')

Il codice sopra quindi seleziona i dati a cui non è associato un elemento in pagina e aggiunge gli elementi corrispondenti.

L'istruzione successiva restituisce invece la selezione degli elementi a cui non è associato nessun dato e li rimuove:

d3.select('svg')
    .selectAll('circle')
    .data(data)
    .exit()
    .remove()

{% hint style="info" %} Per approfondire:
- Learning D3.js - Now with data!
- Exploring D3.js Data Binding/ Joins {% endhint %}