Extjs4.2 在使用treepanel的时候碰到循环加载的问题;
1、开始看现象就是前端不断的请求,导致不断的在某些节点上加载数据;
2、查看前端代码,网上有些帖子的解决办法说的是将TreeStore中的root节点的配置删除掉,但是我的代码中没有写root节点,具体代码如下:
Ext.define('MonitorData', {
extend: 'Ext.data.Model',
fields: [
//第一个字段需要指定mapping,其他字段,可以省略掉。
{name:'assigned',mapping:'assigned'},
'unconfirmedAssigned',
'investigatingAssigned',
'endNum',
'warnNum',
'overDayNum',
'allNum'
]
});
var monitorStore = Ext.create('Ext.data.TreeStore', {
model: 'MonitorData',
proxy: {
//异步获取数据,这里的URL可以改为任何动态页面,只要返回JSON数据即可
type:'ajax',
url: 'zz/monitor',
reader : {
type : 'json'
}
},
folderSort: true
});
Treepanel:
xtype: 'treepanel',
renderTo: Ext.getBody(),
width: 748,
height: 430,
split: true,
autoScroll: true,
animate : true,
rootVisible: false,
store: monitorStore,
fields: ['treecolumn', 'unconfirmedAssigned', 'investigatingAssigned', 'endNum', 'warnNum', 'overDayNum', 'allNum'],
columns: [{
xtype: 'treecolumn',
text: "已分配团队/用户",
dataIndex: 'assigned',
width: 170,
sortable: true
},{
text: "待定(未经确认)",
dataIndex: 'unconfirmedAssigned',
width: 125,
sortable: false
},{
text: "待定(正在调查)",
dataIndex: 'investigatingAssigned',
width: 125,
sortable: true
},{
text: "完毕",
dataIndex: 'endNum',
width: 75,
sortable: true
},{
text: "警告",
dataIndex: 'warnNum',
width: 75,
sortable: true
},{
text: "过期",
dataIndex: 'overDayNum',
width: 75,
sortable: true
},{
text: "总计",
dataIndex: 'allNum',
width: 75,
sortable: true
}]
3、最后在网上找了一段json数据放进去测试居然是好的,如下:
String json =
"["+
"{assigned:1,unconfirmedAssigned:'01',"+
"children:["+
"{assigned:11,unconfirmedAssigned:'01-01',leaf:true},"+
"{assigned:12,unconfirmedAssigned:'01-02',leaf:true}"+
"]}"+
",{assigned:2,unconfirmedAssigned:'02',"+
"children:["+
"{assigned:21,unconfirmedAssigned:'02-01',leaf:true},"+
"{assigned:22,unconfirmedAssigned:'02-02',leaf:true}"+
"]}"+
"]";
通过这个代码与我返会的数据进行对比发现标注叶子节点leaf默认是false,所以你只要没有设置这个属性或者设置了一个叶子节点leaf属性为false后就会出现在那个节点上的循环加载。