ecco, una vista dorsale di rendering chiamata:chiamando javascript sul rendering delle viste in BackBone js. callback post-rendering?
render: function() {
$(this.el).html(this.template({title: 'test'})); //#1
this.renderScatterChart();
return this;
},
così, io chiamo uno standard di rendering al # 1. e poi, chiamo un metodo [questa volta, è un wrapper per la creazione di grafici della lib] che cerca un div. il div è reso dalla chiamata di rendering. ma a questo punto, non è ancora collegato al DOM (giusto?). così la call del grafico muore tristemente.
qual è lo schema per questo? mi piacerebbe sapere che c'è una richiamata post-rendering. Ho provato alcuni hack intorno a questo, e a volte ho il grafico per funzionare, ma gli eventi non si legano.
omg. Sono incredulo che questo ha funzionato. – whatbird
@whatbird: questo trucco 'setTimeout (..., 0)' imposta semplicemente una funzione da chiamare quando il tuo JavaScript è completo e il controllo ritorna al browser. Quindi il tuo codice imposterà tutto e aggiungerà tutto al DOM, quindi il browser prende il sopravvento e attiva la funzione ritardata. Questo trucco è un po 'un trucco ma utile. –
L'hack non è necessario se si inserisce view.el nel DOM prima di eseguire il rendering. Non mi piace usare setTimeout hack, seguendo un buon flusso non è mai necessario. Controlla la mia risposta spiegando le differenze che eseguono il rendering prima di inserire .el e in esecuzione dopo l'inserimento. Un arresto anomalo e l'altro funziona normalmente, senza l'uso di setTimeout. ;) –