Sencha Touch 2从json读取树结构

时间:2012-03-28 06:53:57

标签: sencha-touch-2

我正在试图找出如何将这样的树结构读入适当的模型实例:

{
    "name":"root"
    "kids":[
        {
            "name":"kid1",
            "kids": [...] //More kids
        },
        {
            "name":"kid2",
            "kids": [...] //More kids
        },
        {
            "name":"kid3",
            "kids": []
        },
        ...
    ]
}

以下是我尝试的两种型号:

Ext.define('TreeNode', {
    extend: 'Ext.data.Model',

    config: {
        fields: ['name'],
        hasMany:{model: 'TreeNode', name: 'kids'}
    }
});

//This one seems to work, but it simply loads
//generic objects into the "kids" property
//and not real model instances.
Ext.define('TreeNode', {
    extend: 'Ext.data.Model',

    config: {
        fields: ['name', 'kids']
    }
});

商店:

Ext.define('TreeStructureStore', {
    extend: 'Ext.data.Store',

    config: {
        autoLoad: false,
        model: 'TreeNode',

        proxy: {
            type: 'ajax',
            url: 'simple.json',
            reader: {
                type: 'json'
            }
        }
    }
});

我似乎无法让模型和商店正常工作。充其量它只会读取最顶层的元素。如何让它以递归方式读取并生成正确的模型实例树?

1 个答案:

答案 0 :(得分:2)

http://www.sencha.com/forum/showthread.php?178848-Nested-JSON-and-hasMany-associations

看起来类似于我遇到的问题并且最终能够解决(并在Sencha论坛中发布了答案)。这里的关键点是对hasMany关联使用associationKey配置属性,但请查看整个帖子。