1

私はEmber.CollectionView、大規模な子供たちと一緒に拡張して作業しています。すべての子がレンダリングされた後、jQuery プラグインによって処理されるスタイリング JavaScript を実行する必要があります。これに対する私の最初の試みは、didInsertElement私が知っていて大好きなフックを利用することでしたが、このフックは私の目的に対しては早すぎるようです。

ドキュメントhereによると、このフックは次の場合に発生します

ビューの要素が DOM に挿入されたときに呼び出されます。ドキュメント本文に要素を必要とする設定を行うには、この関数をオーバーライドします。

おそらく、Ember がどのようにレンダリングされるかについて誤解があるかもしれませんが、このことから、私のアプローチが機能するはずです。

バグが発生していますか? 私が誤解したこの正しい機能はありますか? また、各子ビューが起動したときに警告するコールバックを備えたチェックイン スタイル システムを使用する以外に、標準的な回避策はありますdidInsertElementか?

編集記録のために、チェックインシステムの使用は機能します。親が発砲するたびに、どの子ビューがチェックインしたかを数えていますdidInsertElementが、もっと良い方法があるかどうか知りたいです。

4

1 に答える 1

4

技術的に CollectionView は子の前に挿入されるため、はい、これは正しい機能です。afterRenderすべての子がレンダリングされたときに CollectionView にコールバックを追加するには、キューを使用する必要があります。

App.ContainerView = Ember.ContainerView.extend({
  didInsertElement: function() {
    Ember.run.scheduleOnce('afterRender', this, function(){
      // this will be performed after every child has been rendered
    });
  }
})
于 2013-03-06T08:27:06.737 に答える