我在我的应用程序中广泛使用声明性dojo DataStore,并将它们连接到各种声明性数据驱动的Widgets。当我试图“销毁”包含DataStore的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
但未成功)或者如何自动清理这些数据存储区?
答案 0 :(得分:0)
根据discussion with the open ticket,dojo版本1.4.x不会自动delete
全局变量,这些变量由解析器通过设置jsId
属性创建。目前删除它们的唯一方法是手动跟踪它们并发出delete variable_name
。正在考虑为将来发布的dojo提供某种长期解决方案。