我正在使用一个containerview,我使用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。
答案 0 :(得分:1)
你不必担心内存泄漏。
您正在将控制器分配给插入currentView
的视图,而不是保留对它的引用。当视图被拆除时(当容器视图的currentView
设置为null
或其他内容时),Ember将destroy
它。这将释放对它的任何剩余引用,这将使GC收集它,并将引用的控制器与它一起收集。
如果出于某种原因这不是真的,那可能是一个Ember错误。