2012-04-27 6 views
6

ember.jsが実行している間にスピナーが実際に回転しているときに問題が発生しています。私は予想通り、この作品を作るための簡単な方法がなければならないと仮定し、私はそれを見つけていないですember.jsオブジェクトがロードされているときにアニメーションGIFが一時停止する

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

:私はこの問題を示して非常に一般的なjsfiddle例を持っています。私は同じ結果を持つスピナー(spin.js)のJavaScript/CSS実装を使用しようとしました。私はこれが通常IEの問題であることを示すいくつかのものを見ましたが、ここでは該当しません。これはWindows上のすべてのブラウザで発生し、私もMac Safariでテストしました。

+0

あなたのコレクションにはいくつのアイテムがありますか? –

+0

Ember.jsオブジェクトであるコレクション内の50個のアイテム。各オブジェクトには、合計6個の他のオブジェクトの配列が含まれています。 – BrianB

答えて

1

問題はあなたのforループです - 基本的にスレッドをロックしています。私はタイムアウトを使用して、ページ上の他の処理の必要性を実行する能力を与えるために行われるべき作業をチャンクします。

+0

配列の反復はここでは大したことではありません(少なくとも問題の一部に過ぎません)。 Emberのhandlebars.js実装はitemsControllerを{{#each}}タグで繰り返しています。私はsetTimeoutと[Nick Fitzgerald's Patterns](http://fitzgeraldnick.com/weblog/35/)を使っていくつかの降伏パターンを見ましたが、EmberのDOMの更新ではなく、コントローラへのアイテムの読み込みに役立ちます私の特定のケースは、スレッドロックのライオンのシェアが起こっている場所です。 – BrianB

+0

ああ、公正なポイント。それははるかに理にかなっています。 –

1

@ChristopherSwaseyは根本原因に限りません。私はいくつかのEmber開発者にこれについて尋ねました。解決策はありませんが、2つの興味深い考えがあります:

1)1人の開発者が、この問題にぶつかり、アニメーションGIFが長いJavaScript実行前に開始されたことを確認したと報告しました。

2)別の開発者は、可視化されたノードだけが表示されるように、仮想化されたリストを使用することが正しいパスであることを示唆しました。しかし、Emberの仮想化されたリストクラスについてはまだわかりません。

希望に役立ちます。

+0

emberからのDOMアップデートの前にgifを読み込んでも影響はありません。 js fiddleの例にも影響はありません。 – BrianB

関連する問題