Extjs树无法加载嵌套对象

时间:2012-08-24 06:48:21

标签: object extjs tree nested

我在java中有一个名为Zone1s的类,它有2个字段文本(区域名称)和Zone1s列表。 当我把它转换为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不是函数... 任何人都可以指导我在哪里错了吗?  我经历过 How do I show nested data into a tree?  但是这里我的Zone1s本身可以有Zone1s,这就是区别。

1 个答案:

答案 0 :(得分:-1)

您应该为商店添加根属性:

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