[英]Memory Management Using Backbone.js - How to reference current views
我正在使用Backbone.js來構建我當前的應用程序。
作為一種通過路線導航的方式,我將替換html中的新頁面視圖,如下所示
//When new route is called, a new view is created and the html is replaced with the new view
view = new Onethingaday.View.NewView()
$(".main_content_container").html view.render().el
我在網上發現,如果我們使用骨干,我們必須進行內存管理,如本文所示:https://paydirtapp.com/blog/backbone-in-practice-memory-management-and-event-bindings/
我的問題是
1)將當前視圖完全釋放,只需用新視圖替換它(通過$(“。main_content_container”)。html view.render()。el)?
2)如果沒有,有沒有辦法讓我參考所有觀點? 這樣我就可以在程序代碼中手動釋放或刪除它們?
謝謝
1)不,您的視圖和相關事件仍然存在。 你不會再“看到”了它。
2)Derick Bailey對處理視圖和頁面轉換有很好的解釋 。 在他的網站上概述的方法很容易遵循,並得到很好的解釋。
回應yeing yeow的評論:
簡短的回答是:視圖仍然存在,因為它仍然附加到DOM元素。 使用$('#someTag').html(newView.render().el)
該元素的內容$('#someTag').html(newView.render().el)
oldView.remove()
與在元素上調用oldView.remove()
和oldView.unbind()
。
沒有清理。 當你調用$('#someTag').html(newView.render().el)
,(previous和present)(視圖和事件)仍然綁定到#sometag
元素。
這就是為什么當一個新視圖被渲染時(假設沒有清理) $('#someTag').html(newView.render().el)
,如果你去一個視圖,到另一個視圖,到另一個視圖,依此類推......你將有多個事件和視圖附加到一個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.