2012-05-30 367 views
5

我想更改爲CollectionView(由{{each}}創建)的更新的呈現時間表,以便大插入不會長時間阻塞UI線程。理想情況下,我想渲染儘可能多的元素,比如說我可以說50毫秒,然後將控制權交還給UI線程,並設置超時以繼續進一步渲染。看起來Ember中有一些工具可以實現自定義渲染緩衝區行爲,但我不確定從哪裏開始。分解CollectionView呈現以避免阻塞UI線程

這裏的顯示500個的元素插入列表阻塞UI線程一陣的jsfiddle基準:

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

+0

這是否已在EMBER 1.0.0-RC.1中修復? –

回答

2

我想找到一個更好的方法來做到這一點,但現在的我延遲我填充ArrayController內容的速度。這是一個非常骯髒的例子。

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

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

您可以通過只維持項目,這將是在視口中的內容列表改善這一點。我喜歡將你的想法掛鉤到CollectionView的itemViewClass的渲染函數中,並且只允許渲染一定數量的視圖。