2012-04-27 59 views
6

當一個實際上旋轉的旋轉器出現問題時,ember.js正在做這件事。我有一個說明這個問題一個非常通用的jsfiddle例如:當ember.js對象加載時,動畫gif暫停

http://jsfiddle.net/h4ZcZ/2/

我認爲必須有一個簡單的方法,使如預期這項工作,但我還沒找到。我已經嘗試使用相同結果的微調控制器(spin.js)的JavaScript/CSS實現。我看到一些東西表明這通常是一個IE問題,但這不是這種情況。這發生在Windows上的所有瀏覽器上,我也在Mac Safari上進行了測試。

+0

您的收藏中有多少物品? – 2012-04-28 20:40:15

+0

集合中的50個項目是Ember.js對象。每個對象都包含一個總共6個其他對象的數組。 – BrianB 2012-04-28 23:41:43

回答

1

問題是你的循環 - 你基本上鎖定了線程。我會使用超時和大塊工作來完成頁面上的其他處理需求來執行。

+0

數組迭代不是這裏吸引人的最大時間(或者至少它只是問題的一部分)。 Ember的handlebars.js實現使用{{#each}}標記遍歷itemsController。我看着使用setTimeout和[尼克·菲茨傑拉德的模式(http://fitzgeraldnick.com/weblog/35/)一些高產的模式,但將只與物品的裝載幫助到控制器,不Ember的DOM的更新這我的具體情況是大多數線程鎖定的情況發生。 – BrianB 2012-04-28 12:17:43

+0

啊,公平點。這確實更有意義。 – 2012-04-28 18:08:54

1

就根本原因而言,@ChristopherSwasey是正確的。我向其他一些Ember開發者詢問了這一點。無解,但有兩個有趣的想法,這可能有助於:

1)一位開發商報告說,他遇到了這個問題,並通過確保gif動畫長JavaScript執行前就開始圍繞它得到。

2)另一種顯影劑建議使用虛擬化列表是正確的路徑,使得僅可見節點被渲染。但是,恐怕我還不知道開源的Ember虛擬化列表類。

希望有所幫助。

+0

加載GIF之前從灰燼DOM中更新對我來說沒有任何影響。沒有在js小提琴例如任何影響無論是。 – BrianB 2012-04-29 01:29:43