我有两个extjs treeStores,一个是temp,另一个是工作的treeStore,数据由treePanel解释。码:

var treeStore = Ext.create('Ext.data.TreeStore',{
root: {
childrens:[],
expanded: true,
text: 'Services'
}
 });
  var tempStore = Ext.create('Ext.data.TreeStore',{
    autoload: false,
    proxy:{
        type: 'ajax',
        url: 'server.jsp',
      reader: {
          type:'json'
      }
    },
    clearOnLoad: true,
  listeners:{
    load:{
        fn: afterload
    }
    }
  });
  tempStore.load();

  function afterload(store)
  {
 var rootTree = treeStore.getRootNode();
 var copyChilds = Ext.clone(store.getRootNode().childNodes);
 if(rootTree.hasChildNodes())
 {
 rootTree.removeAll(false);
 }
 for(var i=0;i<copyChilds.length;i++)
 {
 rootTree.appendChild(copyChilds[i]);
 }
}


调用tempStore.load方法时,我将在服务器上发送查询,获取数据,然后将其放在另一个treeStore.p>上。
  tempStore使用TaskRunner每3秒重新加载一次:

var taskTree = {
        run: reloadTree,
    interval:3000 // 1 second
       }
 var runReloadTreePanel = Ext.create("Ext.util.TaskRunner");


我有一个复选框,当我将其状态更改为true时,跑步者开始工作:

var checkbox = Ext.create('Ext.form.field.Checkbox',{
       boxLabel: 'Refresh',
       listeners :{
           change: {
                fn: changeCheckBoxState
            }
        }
});
    function changeCheckBoxState(field,newValue,oldValue)
         {
      if(newValue)
    {
            runReloadTreePanel.start(taskTree);
    }
      else
    {
    runReloadTreePanel.stop(taskTree);
    }
         }


问题:

在启动2-3分钟后,由于方法后加载内容(即复制数据),开始的内存开始增长(每10秒3-4 MB)。是错误还是我做错了什么?也许函数removeAll(false)并未删除treeStore根节点的所有子数据?我使用了很多变体-使用Ext.select(..)+ innerHtml清理dom模型元素,尝试使用remove(..)逐个删除记录,但是内存会增加。
   我的treepanel解释所有的好,没有不必要的数据。
有任何想法吗?对不起,如果我的英语不好。

最佳答案

我试图将功能加载的内容更改为此:

function load(store)
{
var childs = Ext.clone(store.getRootNode().childNodes);
Ext.select('div#treepanel-1032-body div table tbody tr[class^="x-grid-row"]').remove();
treepanel.setRootNode({
 text: "Services",
 expanded: true,
 children: childs
});


我直接删除了dom模型对象,从treepanel存储的配置属性中删除了该对象,并每3秒钟设置了新的根目录,但是内存增加了,尤其是在IE中。有什么建议吗?

07-24 18:50
查看更多