Extjs4.x ,tree.getStore().load(); 重复加载多次的问题,

问题描述

使用 tree.getStore().load() 时,虽然最后都重新加载了,但居然会访问服务器十多次,这可如何是好?关键自带如下:var store = Ext.create('Ext.data.TreeStore', {fields:[{name:"url",type:"string"},{name:"pids",type:"string"},{name:"text",type:"string"}],root: {expanded:true,text:"Root",id:"0",pids:"0,"} ,proxy: { type: 'ajax', url: '/getMenuData', extraParams: {"test": "1"}, method: "POST", reader: { type: 'json' } }, autoLoad: true});var tree = Ext.create('Ext.tree.Panel', { layout:'fit', width: 200, bodyPadding: 5, store: store, autoDestroy:true, rootVisible:true, title:"测试"});,使用 tree.getStore().load()方法的时候,怎么会重复加载多次?怎么会这样? 问题补充:clue 写道

解决方案

贴上去 就解决了 /*Overrides for fixing clearOnLoad for TreeStore*/Ext.override(Ext.data.TreeStore, {load: function(options) {options = options || {};options.params = options.params || {};var me = this,node = options.node || me.tree.getRootNode(),root;// If there is not a node it means the user hasnt defined a rootnode yet. In this case lets just// create one for them.if (!node) {node = me.setRootNode({expanded: true});}if (me.clearOnLoad) {node.removeAll(false);}Ext.applyIf(options, {node: node});options.params[me.nodeParam] = node ? node.getId() : 'root';if (node) {node.set('loading', true);}return me.callParent([options]);}});
解决方案二:
记得给分啊
解决方案三:
抱歉,没看到你的补充说明,你说的“但如果放在事件里面”是什么意思?是什么事件?
解决方案四:
你要在返回的数据中显式地声明节点为叶子节点: leaf: true否则树组件以为它有子节点,去尝试加载
解决方案五:
我貌似也遇到这个问题了。加载超慢。求解。
解决方案六:
树的加载是可以分层次的,即一次加载一个节点的直属子节点。我猜你后面肯定有调用什么递归展开之类的逻辑,也可能Ext4.x自带的递归加载(4.x没怎么用过),当树节点层次较多时会层层加载,发出多个请求;也有可能你的树只有一层,但叶子节点没有设定leaf:true,导致Ext也去尝试加载子节点;
解决方案七:
// 自动加载 如果你会手动调用load() 的话,这里可以不自动加载. autoLoad: true // 至于你说的会加载10多次...你可以检查一下,是不是绑定了多次事件.或者在load()的// 时候,断点,看是否调用了10多次.

时间: 2024-10-26 19:14:22

Extjs4.x ,tree.getStore().load(); 重复加载多次的问题,的相关文章

extjs4.2 tree panel 重复加载!

问题描述 extjs4.2 tree panel 重复加载! 这是后台返回的JSON {"mytree":[{"description":"faffaf","name":"wafa","children":[{"description":"wowowo","name":"hahaha","leaf&

Extjs4中tree的拖拽功能简单实例

这篇文章主要介绍了Extjs4中tree的拖拽功能简单实例,有需要的朋友可以参考一下 代码如下: //只要要在treepanel中配置一下viewConfig即可,如果是两棵树之间,两棵树都要配置     viewConfig:{    plugins :{     ptype:'treeviewdragdrop',     appendOnly:true   //只能拖着带非叶节点上    },    listeners:{//监听器     drop:function(node,data,o

Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例_javascript技巧

复制代码 代码如下: //只要要在treepanel中配置一下viewConfig即可,如果是两棵树之间,两棵树都要配置    viewConfig:{   plugins :{    ptype:'treeviewdragdrop',    appendOnly:true   //只能拖着带非叶节点上   },   listeners:{//监听器    drop:function(node,data,overModel,dropPosition,options){     //ajax的操作

ExtJS 刷新后,默认选中刷新前最后一次选中的节点

在对树节点进行操作后往往需要进行reload操作刷新一下树,但是很多业务都需要在树形刷新后默认 选中最后一次选中的节点.这样就必须先保存前一次选中节点的信息,在reload之后再次通过节点的信息 进行expand逐层展开到这个节点上. 查询了好久终于找到一个可行的方案,就是通过节点的path来记录节点的位置信息,然后通过path从 root节点开始逐层展开,直到最后一个节点. 完成的代码如下: 首先是extjs3.x版本中的方法: //获取选中的节点 var node = tree.getSel

ExtJS 刷新后如何默认选中刷新前最后一次选中的节点

 这篇文章主要介绍了ExtJS 刷新后如何默认选中刷新前最后一次选中的节点,需要的朋友可以参考下 在对树节点进行操作后往往需要进行reload操作刷新一下树,但是很多业务都需要在树形刷新后默认选中最后一次选中的节点.这样就必须先保存前一次选中节点的信息,在reload之后再次通过节点的信息进行expand逐层展开到这个节点上.    查询了好久终于找到一个可行的方案,就是通过节点的path来记录节点的位置信息,然后通过path从root节点开始逐层展开,直到最后一个节点.    完成的代码如下:

ExtJS 刷新后如何默认选中刷新前最后一次选中的节点_extjs

在对树节点进行操作后往往需要进行reload操作刷新一下树,但是很多业务都需要在树形刷新后默认选中最后一次选中的节点.这样就必须先保存前一次选中节点的信息,在reload之后再次通过节点的信息进行expand逐层展开到这个节点上. 查询了好久终于找到一个可行的方案,就是通过节点的path来记录节点的位置信息,然后通过path从root节点开始逐层展开,直到最后一个节点. 完成的代码如下: 首先是extjs3.x版本中的方法: 复制代码 代码如下: //获取选中的节点 var node = tre

DHTMLX Tree中文开发指导

 专业版1.6下载地址(CSDN)  http://download.csdn.net/source/1388340 版本号:dhtmlxTree v.1.6 Professional edition build 71114   最近开发项目使用到了dhtmlXtree做权限设置,看了网上相关的中文资料很少,就把官方的资料翻译了下,一共分2部分,API可以参考官方文档:http://dhtmlx.com/docs/download.shtml   效果图如下(三态树):   dhtmlXTree

在用jquery的getjson做测试的时候遇到问题,无法输出,请解答?

问题描述 在用jquery的getjson做测试的时候遇到问题,无法输出,请解答? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 使用getJSON()方法异步加载JSON格式数据 我最喜欢的一项运动 <br> $(function () {<

HTML5树组件延迟加载技术实现

HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的等待时间,让页面的加载更加流畅,增强用户体验. 进入正题,今天用来做演示的Demo是,客户端请求服务器读取系统文件目录结构,通过HT for Web的HTML5树组件显示系统文件目录结构. 首先,我们先来设计下服务器,这次Demo的服务器采用Node.js,用到了Node.js的express.so