0

我正在使用一个容器视图,我在其中使用 currentview 属性动态添加和删除上下文表单,有点像这样:

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

您不必担心这里的内存泄漏。

您将控制器分配给插入到 a 中的视图currentView,而不是持有对它的引用。当视图被拆除时(当容器视图currentView被设置为null或其他时),Ember 会这样做destroy。这将释放对它的任何剩余引用,这将让 GC 收集它,以及引用的控制器连同它。

如果由于某种原因这不是真的,则可能是 Ember 错误。

于 2013-01-16T23:55:05.843 回答