我创建了一个treepanel,然后创建store
,如
var store = Ext.create('Ext.data.TreeStore', {
autoload: false,
proxy: {
type: 'ajax',
url: 'data.php',
reader: {
type: 'json',
root: 'results'
}
}
});
我的服务器打印json看起来像
{ "results":
[
{ id : '1' , text : '1', expanded: true,
children :[
{ id : '5' , text : '5', leaf:true},
{ id : '6' , text : '6', leaf:true}
]
},
{ id : '2' , text : '2', leaf:true},
{ id : '3' , text : '3', leaf:true},
{ id : '4' , text : '4', leaf:true},
{ id : '7' , text : '7', leaf:true},
{ id : '8' , text : '8', leaf:true},
{ id : '9' , text : '9', leaf:true},
{ id : '10' , text : '10', expanded: true,
children :[
{ id : '11' , text : '11', leaf:true},
{ id : '12' , text : '12', leaf:true}
]
}
]
}
但是当我运行我的代码时,我看到了firebug并且始终运行GET http://localhost/example/data.php...
永远不会停止:(
我的树加了太多双
如何解决这个问题
修改的
实际上我用别名定义我的treepanel并将其用作xtype
但我创造了新的例子并得到了同样的问题。
这是我的js
var store = Ext.create('Ext.data.TreeStore', {
autoload: false,
proxy: {
type: 'ajax',
url: 'data.php',
reader: {
type: 'json',
root: 'results'
}
}
});
Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: 200,
height: 150,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});
这是我的data.php
echo "
{
'success': true,
'variable': 100,
'results':
[
{ id : '1' , text : '1', expanded: true,
children :[
{ id : '5' , text : '5', leaf:true},
{ id : '6' , text : '6', leaf:true}
]
},
{ id : '2' , text : '2', leaf:true},
{ id : '3' , text : '3', leaf:true},
{ id : '4' , text : '4', leaf:true},
{ id : '7' , text : '7', leaf:true},
{ id : '8' , text : '8', leaf:true},
{ id : '9' , text : '9', leaf:true},
{ id : '10' , text : '10', expanded: true,
children :[
{ id : '11' , text : '11', leaf:true},
{ id : '12' , text : '12', leaf:true}
]
}
]
}";
答案 0 :(得分:5)
你在这里有什么我认为是树店里的bug。当您更改阅读器以使用非children
的根时,您还需要将数据中的子属性名称的每个实例也更改为新名称。这意味着如果您想将根更改为results
,您的树数据实际上必须如下所示:
echo "
{
'success': true,
'variable': 100,
'results':
[
{ 'id' : '1' , 'text' : '1', 'expanded': true,
'results':[
{ 'id' : '5' , 'text' : '5', 'leaf':true},
{ 'id' : '6' , 'text' : '6', 'leaf':true}
]
},
{ 'id' : '2' , 'text' : '2', 'leaf':true},
{ 'id' : '3' , 'text' : '3', 'leaf':true},
{ 'id' : '4' , 'text' : '4', 'leaf':true},
{ 'id' : '7' , 'text' : '7', 'leaf':true},
{ 'id' : '8' , 'text' : '8', 'leaf':true},
{ 'id' : '9' , 'text' : '9', 'leaf':true},
{ 'id' : '10' , 'text' : '10', 'expanded': true,
'results':[
{ 'id' : '11' , 'text' : '11', 'leaf':true},
{ 'id' : '12' , 'text' : '12', 'leaf':true}
]
}
]
}";
另一个选项是将顶级results
媒体资源名称更改为children
,并将商店的根目标标记为children
。
答案 1 :(得分:1)
检查你的autoLoad配置拼写。
var store = Ext.create('Ext.data.TreeStore', {
// autoload: false,
autoLoad : false,
proxy: {
type: 'ajax',
url: 'data.php',
reader: {
type: 'json',
root: 'results'
}
}
});
答案 2 :(得分:0)
您可以将根数据添加到商店,例如关注
var store = Ext.create('Ext.data.TreeStore', {
autoLoad : false,
root: {
text: 'Corporate Media',
id: '0',
expanded: true
}
proxy: {
type: 'ajax',
url: 'data.php',
reader: {
type: 'json',
root: 'results'
}
}
});