Apprendimento di d3 e quando creo una semplice matrice di numeri, quindi tentare di associare i dati a un semplice insieme di elementi, ma utilizzare la funzione chiave, che attraversa il ciclo due volte. La prima volta, mi dice che i valori dell'array sono indefiniti. La seconda volta sono disponibili.Funzione chiave D3.js in esecuzione due volte su semplice selettore/matrice combo
Ecco il codice html:
<div class="testBind"></div>
<div class="testBind"></div>
<div class="testBind"></div>
Ed ecco il JS:
var numbers = [1, 2, 3];
function whichNumber(n){
console.log('n----:' + n);
return n;
}
var testKeyFunction = d3.selectAll("div.testBind").data(numbers, whichNumber);
Quando eseguo questo, ottengo:
n----:undefined
n----:undefined
n----:undefined
n----:1
n----:2
n----:3
Ecco un violinista: http://jsfiddle.net/5f8mo2sa/3/
Il rea figlio questo è un problema (a parte il wtf) è perché quando i dati sono una matrice di oggetti e provo a fare riferimento a una chiave nella funzione, lancia un errore indefinito.
Hanno trovato questa grande spiegazione di come selectAll crea una selezione virtuale quando non ci sono elementi sulla pagina, ma questo lascia ancora la domanda di cui sopra senza risposta. Perché esegue il ciclo una volta per ciascun elemento reale, ma non applica i dati? https://www.dashingd3js.com/binding-data-to-dom-elements – ofthewolf
Hanno anche trovato una spiegazione su come aggirare il problema quando si utilizza una serie di oggetti: http://stackoverflow.com/ questions/14149145/join-existing-elements-of-the-dom-to-data-with-d3-js Ma questo non spiega ancora cosa sta succedendo qui o perché. – ofthewolf