我在應用程序中廣泛使用聲明性的dojo DataStores,並將它們連接到各種聲明式數據驅動的小部件。當我試圖「銷燬」包含DataStore的ContentPane時,問題就出現了。所有使用數據存儲的聲明性示例都使用屬性jsId
讓dojo解析器將數據存儲設置爲變量,然後指向該控件。比如我用的是以下幾點:正確銷燬dojo DataStore
<div dojoType="dojo.data.ItemFileReadStore" id="processList" jsId="processList"
url="json/processlist.json.php"></div>
<input dojoType="dijit.form.FilteringSelect" name="processSelect" id="processSelect"
value="null" store="processList" searchAttr="label" />
它的工作原理就像一個魅力,但問題是,當我摧毀父母的contentPane我注意到變量processList
仍然可以在瀏覽器中。在使用應用程序的各個部分之後,我終於在很多很多很少的數據存儲遍佈各處,這顯然是一個相當大的「內存泄漏」。
我該如何避免將數據存儲註冊爲變量(我試圖在store
屬性中嘗試dijit.byId()
而未成功),或者如何自動將這些數據存儲清理乾淨?
模式很麻煩。但是你總是可以直接刪除對象,對吧? – peller
我發佈了這個之後,我嘗試了一個'delete processList;'在我要手動替換ContentPane中的內容的情況下,並驗證該對象已從DOM中刪除。我的問題是我不想去編寫腳本來清理這些項目。 – Kitson
經過一番探索之後,我確信我沒有做任何「錯誤」的事情,因此開了一張新票#10799(http://bugs.dojotoolkit.org/ticket/10799)來解決「缺陷」問題。 – Kitson