2012-05-30 3 views
5

Vorrei modificare il programma di rendering per gli aggiornamenti a CollectionView (come creato da {{each}}) in modo che un grande inserimento non blocchi il thread dell'interfaccia utente per un lungo periodo. Idealmente, mi piacerebbe rendere tutti gli elementi possibili, ad esempio 50 ms, quindi passare il controllo al thread dell'interfaccia utente e impostare un timeout per continuare il rendering. Sembra che ci sia qualche funzione in Ember per l'implementazione del comportamento del buffer di rendering personalizzato, ma non sono sicuro da dove iniziare.Interruzione del rendering CollectionView per evitare il blocco del thread dell'interfaccia utente

Ecco un punto di riferimento jsfiddle che mostra l'inserimento di 500 elementi in una lista bloccare il thread UI per un po ':

http://jsfiddle.net/Ecq8g/6/

+0

È stato risolto in EMBER 1.0.0-RC.1? –

risposta

2

vorrei trovare un modo migliore per fare questo, ma in questo momento io sono ritardare la velocità di compilazione del contenuto di ArrayController. Ecco un esempio davvero sporco.

http://jsfiddle.net/BsjSH/1/

for (var i = 0; i <= 999; i++) { 
    Ember.run.later(function() { 
     App.ArrayController.pushObject(App.Thing.create()); 
    }, i * 3);  
}​ 

Si potrebbe migliorare questo mantenendo solo un elenco di contenuto di elementi che sarebbero nel viewport. Mi piace l'idea di aggancio alla funzione di rendering di itemViewClass di CollectionView e solo il rendering di un certo numero di viste.