2014-12-17 18 views
5

La mia comprensione di $$ postDigest è che è un'opportunità per attivare una richiamata al termine del ciclo di digest corrente, senza causare un nuovo ciclo di digest nel processo.

Tuttavia, ciò significa che tutti gli effetti DOM causati dal ciclo di digest corrente sono visibili alla richiamata in $$ postDigest.

Dato il codice pseudo seguito:

//some code affecting the width of an element and triggering a digest loop 
    myModel.width = 10; //bound back to dom element with id = 'myId' 


    $$postDigest(function(){ 
    //some callback running after the most recent digest loop 
    //gets the width of a DOM element by reading the value directly from the DOM element  
    //that was changed in the previous digest loop 
    var width = $('#myId').width(); 
    //Will width always be 10 here? 
    }); 

Supponiamo un valore limite della corrente digerire circuito provoca la larghezza di un elemento DOM per cambiare. Quindi, in $$ postDigest spengo un callback con un codice legacy che legge direttamente la larghezza modificata dall'elemento DOM. È sicuro leggere il valore dall'elemento DOM nella $$ postDigest poiché si suppone che accada al termine del ciclo di digest. In altre parole, il browser deve essere eseguito rendendo gli effetti del ciclo di digest nel momento in cui viene eseguito $$ postDigest?

io non sono un fan di questo modello, ma devono integrarsi con un codice non angolare

risposta

0

$$postDigest incendi una funzione di callback dopo che la corrente ciclo $digest è completa, il che significa che viene eseguito una volta dopo che tutti gli orologi manipolare la DOM e prima del rendering del browser.

Problemi correlati