我在应用程序中广泛使用声明性dojo数据存储,并将它们连接到各种声明性数据驱动的小部件。当我试图“销毁”包含数据存储的ContentPane时,问题就出现了。所有使用数据存储的声明性示例都使用该属性
jsId
让dojo解析器将数据存储设置为变量,然后将控件指向该变量。例如,我使用以下方法:
<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
在浏览器中仍然可用。在使用了应用程序的各个部分之后,我发现到处都是大量的小数据存储,这显然是一个相当大的“内存泄漏”。
如何避免将数据存储注册为变量(我尝试了
dijit.byId()
在
store
属性)或如何自动让这些数据存储自行清理?