2016-09-05 5 views
-1

Я застреваю, создавая пример панели дерева. Я получаю только бесконечное дерево. Что я делаю неправильно?ExtJs 4.2 treepanel

МОДЕЛЬ

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:''} 
] 
}); 

STORE

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' 
    } 
} 
}); 

VIEW

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 
    }) 

КОНТРОЛЛЕР

В контроллере я загрузить дерево магазин с помощью этой команды:

Ext.ComponentQuery.query('viewFichaDetalle #arbolcarpetas')[0].getStore().load(); 

И РНР магазина является:

<?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); 
?> 

В результате это бесконечное дерево:

enter image description here

Что такое Я делаю неправильно? Любая подсказка?

+0

Можете ли вы сделать скрипку? Когда вы это сделаете, проверьте, не является ли проблема, что ваша модель не получена из ['Ext.data.TreeModel'] (http://docs.sencha.com/extjs/4.2.2/#!/api/Ext .data.TreeModel). – Alexander

+0

В вашем коде PHP, чего вы пытаетесь достичь? Потому что в коде ExtJS нет проблем, которые я чувствую, когда когда-либо вы расширяете узел в дереве, URL-адрес магазина будет ударяться и этот PHP-код будет выполняться и будет возвращать тот же набор узлов. – Saloo

+0

может также разместить ваши данные ответа? –

ответ

0

Пожалуйста, убедитесь, что ваши данные ответа должны находиться под тегом «данные», потому что в вашем магазине вы упомянули корневой узел как «данные» [root: «data»]. Но кажется, что вы отправляете массив дочернего узла которые не находятся под узлом «данные». Просьба также опубликовать ваши данные ответа.

0

На самом деле дерево работает, как это, если это не лист, когда вы его открываете, он запрашивает указанный URL. Если это лист, то он прекращает отправку запроса. поэтому в бэкэнд вы должны управлять своим ответом, и вы должны сделать лист истинным для всех конечных узлов, тогда он будет работать в противном случае, это будет бесконечное дерево.

В вашем случае сначала запрашивается один api, поэтому сервер дает ответ, но листы всех узлов являются ложными. Когда вы снова открываете узел A0, он запрашивает тот же URL-адрес и получит тот же ответ в этом ответе, что все листы являются ложными это продолжается вечно. Итак, вы должны обрабатывать его в бэкэнд, чтобы для всех конечных узлов вам нужно было сделать лист истинным, тогда он будет работать нормально

+0

У меня уже есть эта проблема и я решил самостоятельно, если вы хотите попробовать, я отправлю свой пример кода –

Смежные вопросы