2012-05-30 4 views
5

Chciałbym zmienić harmonogram renderowania aktualizacji na CollectionView (utworzony przez {{each}}), aby duże wstawianie nie blokowało wątku UI przez dłuższy czas. Idealnie, chciałbym renderować jak najwięcej elementów, na przykład 50 ms, a następnie przekazać sterowanie z powrotem do wątku UI i ustawić limit czasu, aby kontynuować dalsze renderowanie. Wygląda na to, że w Ember jest jakiś obiekt do implementacji niestandardowego zachowania bufora renderowania, ale nie jestem pewien, od czego zacząć.Przerywanie renderowania kolekcji ViewView w celu uniknięcia blokowania wątku interfejsu użytkownika

Oto wzorzec jsfiddle pokazując wkładanie 500 elementów do listy blokowania wątku UI na chwilę:

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

+0

Czy zostało to naprawione w EMBER 1.0.0-RC.1? –

Odpowiedz

2

chciałbym znaleźć lepszy sposób to zrobić, ale teraz jestem opóźnianie, jak szybko zapełniam zawartość ArrayController. Oto naprawdę brudny przykład.

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

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

Można by poprawić to tylko o utrzymanie listę zawartości elementów, które byłyby w rzutni. Podoba mi się twój pomysł podpięcia się do funkcji renderowania itemViewClass i tylko pozwala na renderowanie określonej liczby widoków.