2015-07-05 15 views
6

Sto seguendo https://docs.angularjs.org/guide/scope.Aggiornare il DOM vs Rerender il View In Angular

5.La lista di controllo $ rileva una modifica sulla proprietà del nome e notifica l'interpolazione, che a sua volta aggiorna il DOM.

6.Angular chiude il contesto di esecuzione, che a sua volta esce dall'evento keydown e con esso il contesto di esecuzione JavaScript.

7. Il browser re-rendering la vista con il testo di aggiornamento.

sto avendo dubbi che cosa è la differnce tra aggiorna il DOM sulla linea 5 e del browser ri-rende la vista on line 7. grazie in anticipo.

+0

http://stackoverflow.com/questions/4110081/difference-between-html-and-dom – Chrillewoodz

risposta

8

Il DOM rappresenta il documento HTML caricato nel browser. JavaScript può manipolare il documento attraverso il DOM, ma tali manipolazioni non hanno effetto immediato ma solo dopo che il contesto JavaScript che apporta le modifiche al DOM è finito.

pensare in questo modo:

  • JS: Hey documento HTML, sarò apportare alcune modifiche a voi.
  • HTML: Ok, vai avanti, contatta il tuo amico DOM e digli cosa vuoi cambiare.
  • JS: OK, ci sto ...
  • JS: OK, ho apportato alcune modifiche, ma ciao, ci sono alcune altre cose che ho bisogno di cambiare.
  • HTML: OK, vai avanti, aspetterò fino a quando non finisci tutto.
  • JS: OK, fatto con tutto
  • HTML: OK, chiederò al DOM cosa hai cambiato e applicare quelli.

Si consideri il seguente test:

var a = document.body.children[0]; 

a.style.color = 'red'; 
for(var i = 0; i < 10000000000; i++) { }; 
a.style.color = 'blue'; 

Anche se non c'è molto tempo tra l'istruzione per cambiare il colore in rosso e quello di cambiarlo in blu, non vedrete mai il colore cambia a rosso perché tutte le modifiche saranno applicate una volta terminato il JS.

In effetti, il colore diventa rosso ma solo per un periodo di tempo così breve prima che cambi in blu che il browser non ha nemmeno il tempo di eseguire il rendering. O se lo è, non te ne accorgi.

In altre parole, le manipolazioni del DOM vengono accodate dal browser. La coda verrà eseguita una volta terminato il contesto JS. Se JavaScript trascorre del tempo tra 2 modifiche DOM su altre attività, questo ritarderà l'avvio dell'esecuzione della coda e quindi tutte le modifiche in coda verranno eseguite in grande successione.

Alla luce delle informazioni di cui sopra, dovrebbe essere chiaro che la modifica del DOM non è la stessa cosa che la modifica del documento HTML.

+0

Grazie marekful ... –

Problemi correlati