簡體   English   中英

內存管理使用Backbone.js - 如何引用當前視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM