2014-12-17 14 views
5

$$ postDigest Benim anlayışım bu sindirmek akım döngüsü tamamlandıktan sonra bir geri arama yangın için bir fırsat olmasıdır - sürecinde yeni sindirmek döngüsü neden olmadan.

Ancak, bu mevcut sindirmek döngüsü neden olduğu tüm DOM etkileri $$ postDigest geri arama görünür olduğu anlamına gelmez. aşağıdaki psödo kod, göz önüne

:

//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? 
    }); 

en döngü sindirmek mevcut bir ilişkili değer varsayalım değiştirmek için bir DOM öğesinin genişliği neden olur. Ardından, $$ postDigest içinde, DOM öğesinden doğrudan değiştirilen genişliği okuyan bazı eski kodlarla bir geri arama başlatırım. Digest döngüsü bittikten sonra olması gerektiğinden, $$ postDigest öğesindeki DOM öğesinden değeri okumak güvenli midir? Başka bir deyişle tarayıcı, digest döngüsünün etkilerini $$ postDigest çalıştığı zamana kadar oluşturmalıdır?

Bu desen taraftarı değilim, ancak mevcut $digest döngüsünden sonra olmayan bazı açısal kodla

cevap

0

$$postDigest yangınları bir geri çağırma işlevi entegre etmek zorunda tüm saatler manipüle kez peşinden koşar, yani tamamlandığında DOM ve tarayıcı oluşturmadan önce.