2012-05-30 366 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的渲染函数中,并且只允许渲染一定数量的视图。