代码之家  ›  专栏  ›  技术社区  ›  Kitson

正确销毁dojo数据存储

  •  2
  • Kitson  · 技术社区  · 16 年前

    我在应用程序中广泛使用声明性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 属性)或如何自动让这些数据存储自行清理?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Kitson    16 年前

    根据 discussion with the open ticket ,版本1.4.x的dojo将不会自动 delete jsId delete variable_name . 目前正在考虑dojo未来版本的某种长期解决方案。