1

私は2つのフィールドテキスト(ゾーンの名前)とZone1sのリストを持つZone1sというクラスをJavaで持っています。それをjsonに変換すると、次の応答が返されます:

{"text":"Papa","Zone1s":[{"text":"Beta1","Zone1s":[{"text":"BetaBeta1","Zone1s":[]},{"text":"BetaBeta2","Zone1s":[]}]},{"text":"Beta2","Zone1s":[]}]}

以下に Extjs モデル、ストア、およびパネルを作成しました。

Ext.define('Zone1s', {
    extend: 'Ext.data.Model',
    fields: [

        { name: 'text', type: 'string' } 
    ], 

    proxy: {                       
        type: 'ajax',
        url : 'test.htm',
        reader: {
    type  : 'json',
      record: 'Zone1s'
        }
    },
hasMany: {model: 'Zone1s', name: 'Zone1s'},
belongsTo: 'Zone1s'
});

var store =Ext.create('Ext.data.Store', {
    model: 'Zone1s',
    autoLoad: true
});

Ext.create('Ext.tree.Panel', {
    title: 'Simple Tree',
    width: 200,
    height: 150,
    store: store,

    renderTo: Ext.getBody()
});

次のエラーが表示されます: me.store.getRootNode は関数ではありません... 間違っているところを教えてください。ネスト されたデータをツリーに表示するにはどうすればよいですか? しかし、ここで私の Zone1 はそれ自体に Zone1 を持つことができます。それが違いです。

4

1 に答える 1

-1

ストアにroot属性を追加する必要があります:

var store =Ext.create('Ext.data.Store', {
    model: 'Zone1s',
    autoLoad: true,
    root: {
      text: 'Zone1s',
      id: 'Zone1s',
      expanded: true
   }
});

ルートノードを表示したくない場合は、rootVisible属性を使用します。

Ext.create('Ext.tree.Panel', {
        title: 'Simple Tree',
        width: 200,
        height: 150,
        store: store,
        rootVisible : false,
        renderTo: Ext.getBody()
    });
于 2012-08-29T15:34:33.343 に答える