正确销毁dojo DataStore

时间:2010-02-23 09:50:02

标签: javascript dojo

我在我的应用程序中广泛使用声明性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但未成功)或者如何自动清理这些数据存储区?

1 个答案:

答案 0 :(得分:0)

根据discussion with the open ticket,dojo版本1.4.x不会自动delete全局变量,这些变量由解析器通过设置jsId属性创建。目前删除它们的唯一方法是手动跟踪它们并发出delete variable_name。正在考虑为将来发布的dojo提供某种长期解决方案。