0

次のように、currentview プロパティを使用してコンテキスト フォームを動的に追加および削除する containerview を使用しています。

showSomeForm: ->
  form = @get('theContainerView')

  if form.get('currentView')
    form.set('currentView', null)

  contextualForm = App.Form.create
                     controller: App.Controller.create()

showSomeOtherForm: ->
  form = @get('theContainerView')

私の心配は、コントローラーを作成するたびにメモリリークが発生することと、これが最善の方法であるかどうかです。

ユーザーがコンテキスト フォームを完了したら、非表示にするために currentView も null に設定します。

これを行うためのより良い方法はありますか?私は現在、ember v1.0.0-pre.2-54 を使用しています。

4

1 に答える 1

1

ここでは、メモリ リークについて心配する必要はありません。

に挿入されたビューにコントローラーを割り当てていますが、currentViewそれ以外の場合はそれへの参照を保持していません。ビューが取り壊されたとき (コンテナ ビューcurrentViewが に設定されたときnullなど)、Ember はdestroyそれを行います。これにより、残りの参照が解放され、GC がそれを収集できるようになり、参照されたコントローラーもそれと共に解放されます。

これが何らかの理由で当てはまらない場合は、おそらく Ember のバグです。

于 2013-01-16T23:55:05.843 に答える