我很难创建一个树面板的例子。我只获得了一棵无限的树。我做错了什么?
MODEL
Ext.define('mdlDocumentosTree', {
extend: 'Ext.data.Model',
fields:[
{name:'id', type:'string', mapping:''},
{name:'text', type:'string', mapping:''},
{name:'leaf', type:'boolean', mapping:''},
{name:'iconCls', type:'string', mapping:''}
]
});
商品
Ext.define('strDocumentosTree', {
extend: 'Ext.data.TreeStore',
model: 'mdlDocumentosTree',
autoLoad: false,
proxy: {
type: 'ajax',
api: {read: 'some url'},
reader: {
type: 'json',
root: 'data',
totalProperty: 'total',
successProperty: 'success'
}
}
});
查看
var arbolcarpetas=new Ext.tree.Panel({
itemId:'arbolcarpetas',
title:'Archivos del Expediente',
region:'west',
width:250,
collapsible:true,
border: false,
autoScroll:true,
store:almacenDocumentos,
rootVisible: false
})
CONTROLLER
在控制器中,我使用以下命令加载树存储:
Ext.ComponentQuery.query('viewFichaDetalle #arbolcarpetas')[0].getStore().load();
商店的php是:
<?php
$x=0;
$nodes = array();
while($x<10){
array_push($nodes,array('text'=>"A".$x, 'id'=>$x,'children'=>array('text'=>"A".rand(10,100),'id'=>$x,leaf=>true,'iconCls'=>'icon-excel')));
$x++;
}
echo json_encode($nodes);
?>
结果是这个无限的树:
我做错了什么?有任何线索吗?
答案 0 :(得分:0)
请确保您的回复数据应在&#34;数据&#34;标记因为在您的商店中您提到了根节点作为数据&#39; [root:&#39; data&#39;],但似乎您发送的子节点数组不在数据&#39;节点。请发布您的回复数据。
答案 1 :(得分:0)
实际上,当你打开它请求指定的URL时,如果它不是叶子,那么树就是这样的。如果是叶子则停止发送请求。所以在后端你必须管理你的响应,你必须为所有的终端节点设置为true,然后它将工作,否则它将是无限树。
在你的情况下,首先你请求一个api所以服务器给出响应但是所有节点的叶子都是假的。当你再次打开A0节点时它会请求相同的url并且在该响应中得到相同的响应所有叶子都是假的永远地继续。所以你必须在后端处理它,对于所有终端节点你必须使叶子真实然后它将正常工作