2016-09-05 7 views
-1

ツリーパネルのサンプルを作成しています。無限のツリーしか取得できません。何が間違っていますか?ExtJs 4.2 treepanel

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

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である:

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

あなたの店であなたがルートノードを 'データ' [ルート: 'データ']として言及しているので、あなたの応答データが「データ」タグの下にあるようにしてください。それらは「データ」ノードの下にはない。親切にもあなたの応答データを投稿してください。

0

実際にツリーは、葉でない場合は、指定したURLを要求します。それがリーフであれば、要求の送信を停止します。バックエンドでは、あなたの応答を管理しなければならず、リーフをすべてのエンドノードに対して真にしなければならない場合、リーフを無限ツリーにする必要があります。

あなたのリクエストでは、最初にapiをリクエストしてサーバーに応答しますが、すべてのノードのリーフをfalseにします。A0ノードを再度開くと、同じURLがリクエストされ、その応答で同じレスポンスが返されます。これは永遠に続きます。あなたはバックエンドでそれを処理しなければなりません。すべてのエンドノードについて、リーフを真にしなければならない場合、それは正常に動作します。

+0

サンプルコードが必要な場合は、すでにこの問題が発生しています。サンプルコードを投稿します –

関連する問題